百度了很多都没找到,国内很少用这个库的,dxlib作者给出的g++配置不会用,dxlib库是静态库,各个库之间还有调用顺序,qt是动态库,两者共同调用出现各种错误,自己瞎弄了半个多月,才配置好.
qt5.5+vs2010+dxlib库
dxlib库 http://homepage2.nifty.com/natupaji/DxLib/
我是小白,说的好多不对的,这样配置很麻烦,应用时还有好多错误,希望有大神把简单的配置方法告诉一下。
具体配置如下:
1.静态编译qt,这一步最重要,解决动态库与静态库之间的问题,把他们都变成静态库(实在不会写代码正确调用dxlib静态库)
先安装要求的那几个软件,再检测有没有在系统变量中,具体网上有,本人安装了vs版的和mingw,两个版本,运行时找不到qmake,又重新设置了qmake,自学真是处处碰壁
配置的代码,好像少编译了很多,i5的本子用了也就两个小时
configure -confirm-license -opensource -platform win32-msvc2010 -debug-and-release -static -prefix "D:\QT\5.5-static-vs2010" -qt-sql-sqlite -qt-sql-odbc -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -no-qml-debug -no-angle -nomake tests -nomake examples -skip qtwebkit
2.编译完成后在.pro文件中加入库的路径,各个静态库(有顺序!!!!!!!)
LIBS += "C:\Users\Desktop\vsku\Dxlib.lib"
LIBS += "C:\Users\Desktop\vsku\DxDrawFunc_d.lib"
LIBS += "C:\Users\Desktop\vsku\DxLibW_d.lib"
LIBS += "C:\UsersDesktop\vsku\DxUseCLibW_d.lib"
LIBS += "C:\Users\Desktop\vsku\libbulletcollision_vc6_d.lib"
LIBS += "C:\Users\Desktop\vsku\libbulletdynamics_vc6_d.lib"
LIBS += "C:\Users\Desktop\vsku\libbulletmath_vc6_d.lib"
LIBS += "C:\Users\Desktop\vsku\libtiff_d.lib"
LIBS += "C:\Users\Desktop\vsku\libpng_d.lib"
LIBS += "C:\Users\Desktop\vsku\zlib_d.lib"
LIBS += "C:\Users\Desktop\vsku\libjpeg_d.lib"
LIBS += "C:\Users\Desktop\vsku\ogg_static_d.lib"
LIBS += "C:\Users\Desktop\vsku\vorbis_static_d.lib"
LIBS += "C:\Users\Desktop\vsku\vorbisfile_static_d.lib"
LIBS += "C:\Users\Desktop\vsku\libtheora_static_d.lib"
3.最后可以导入并显示pmd,mqo,x,模型,具体调用函数里面有实例
导入的模型在qt下有的不能正常显示,但在vs却可正常显示,不知道怎么处理了,本来想把mmd的模型显示窗口单独出来,再加上一个音乐播放器,实现类似桌面宠物类的功能,再加上一个网站,上传pmd模型和vmd动作数据的这样一个想法,本人技术水平有限,只做出了大体功能,遇到上面的问题,实在不想做了,只能暂时放弃了,有想做的大神带我一下.......................................................
贴上我做的代码:
#ifndef MMMWINDOW_H
#define MMMWINDOW_H
#include <QMainWindow>
#include <QMainWindow>
#include<QDragEnterEvent>
#include<QMimeData>
#include<QDebug>
#include<QMediaPlayer>
#include<QDebug>
#include<QListWidgetItem>
#include<QTime>
#include<QUrl>
#include<QTimer>
#include"modeldisplaywindow.h"
namespace Ui {
class MmmWindow;
}
class MmmWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MmmWindow(QWidget *parent = 0);
~MmmWindow();
protected:
void dragEnterEvent(QDragEnterEvent *e);
void dropEvent(QDropEvent *e);
void getplaytimeandplay();
private slots:
void on_pauseOrplayButton_clicked();
void on_songlistWidget_itemDoubleClicked(QListWidgetItem *item);
void on_nextButton_clicked();
void on_lastButton_clicked();
void on_timeSlider_sliderMoved(int position);
void on_voiceSlider_valueChanged(int value);
void timesliderchange(qint64 value);
void timesliderrange(qint64 value);
void on_modellistWidget_itemDoubleClicked(QListWidgetItem *item);
void on_motionlistWidget_itemDoubleClicked(QListWidgetItem *item);
void on_modeldisplayButton_clicked();
private:
Ui::MmmWindow *ui;
QStringList songlist,modellist,motionlist;
bool playflag;
QMediaPlayer *player;
QListWidgetItem *lastsongitem,*lastmodelitem,*lastmotionitem;
int lastsongnum, lastmodelnum,lastmotionnum;
double interval;
QTimer *test;
QString tempdir,tempdir1,tempdirchange;
ModelDisplayWindow *modelplay1;
int clicknum;
bool modeldisplayflag;
QString a;
QFile *temp;
};
#endif // MMMWINDOW_H
#ifndef MODELDISPLAYWINDOW_H
#define MODELDISPLAYWINDOW_H
#include <QWidget>
#include"DxLib.h"
#include<QString>
class ModelDisplayWindow : public QWidget
{
Q_OBJECT
public:
explicit ModelDisplayWindow(QWidget *parent = 0);
void getmodel(QString modelname);
int ModelHandle, AttachIndex ;
float TotalTime,PlayTime;
void clear();
public slots:
void modelplay();