可能会多次提出类似的问题 . 但是我无法解决任何当前答案的问题 . 我希望得到一个快速的答案 .
在 QT C++ 中,我正在尝试使用 Dime library 来自:https://bitbucket.org/Coin3D/dime/overview
我有一个已编译的 .lib 文件的Dime库用于Windows . 它是Visual Studio下的's working with my friend'机器 . 所以我有所有 Headers 和 dime.lib 文件 .
在我的.pro文件中,我这样做:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = dimeTest
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
LIBS += -L$$PWD/src/release/ -ldime
INCLUDEPATH += $$PWD/src
DEPENDPATH += $$PWD/src
PRE_TARGETDEPS += $$PWD/src/release/dime.lib
INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include
$$PWD/include 文件夹包含所有.h头文件 . $$PWD/src/release 包含该lib文件 .
在我的main.cpp中,我只是尝试将变量定义为DimeLine,但无法使其工作 . 这是来自一个新的qt项目 .
#include "mainwindow.h"
#include <QApplication>
#define DIME_NOT_DLL
#include <dime/entities/Line.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
dimeLine line; //please help!! :)
return a.exec();
}
错误输出:
undefined reference to `dimeLine::dimeLine()'
undefined reference to `vtable for dimeExtrusionEntity'
undefined reference to `dimeEntity::~dimeEntity()'
undefined reference to `vtable for dimeExtrusionEntity'
undefined reference to `dimeEntity::~dimeEntity()'
:-1: error: release/main.o: bad reloc address 0x13 in section `.eh_frame'
collect2.exe:-1: error: error: ld returned 1 exit status
请帮我编译一下,如何在QT项目中使用Dime Library?我尝试了很多方法来写一个正确的 .pro file . 他们没有工作 . 始终与'what i use'的未定义引用具有相同的错误消息 . 我总是做干净和qmake .
上面的当前.pro文件是使用自动方式创建的,单击项目上的“添加库”选项 .
我希望,有经验的人可以轻松编译这个 .
一切都好!
UPDATE * 1我正在尝试在我的机器上重新编译Dime,可能是问题是关于尝试使用vs lib for qt,如果有人也可以帮我编译Dime:https://bitbucket.org/Coin3D/dime/overview在Windows机器上用于QT Creator(使用mingw g)我会太高兴了!!
2 回答
好吧,在查看了Dime源之后,我注意到它需要使用以下两个定义中的一个:
DIME_DLL
和DIME_NOT_DLL
. 我假设你要静态链接到dime库,所以,根据笔记,你必须使用DIME_NOT_DLL
define . 您可以通过在.pro文件中添加以下行来实现:我用msys在我的windows机器上编译 DIME library 解决了这个问题 . 在这里,我想分享一下我的步骤,哪些错误:我希望它可以帮助别人 .
首先,我有一个朋友的 .lib 文件,他正在使用 Visual Studio 但是我发现根本没有使用minwg g .
因此,如果使用 Visual C++ 编译库,则会得到 .lib 文件 . 但是当我在 msys 控制台上用 g++ 和 mingw 编译它时,我得到了一个 .a 文件,该文件与 QT creator 配合得很好
在ubuntu下还有一个已经编译过的库libdime版本,该文件是libdime.so,但是不要试图让它在windows上运行:))
对于编译角色库,
1-)从 https://bitbucket.org/Coin3D/dime 下载所有源项目
2-)安装Mingw msys,并确保你将“ C:\MinGW\bin ”添加到你的路径,因为msys将需要它,无论如何然后使用 msys console . CD到你的角钱夹 .
3-)首先需要 configure 它,
4-)你可以检查make是否可以正常工作 . 在运行那些make,配置etc命令的dime文件夹上执行 not have any space ,否则可能会失败 .
5-)成功
6-)现在安装它, .
这些是编译Dime的步骤,现在将其添加到QT项目中
现在,从c:/ yourDestinationForCompiledDIME复制/ lib /和/ include /文件夹到您的项目文件夹 . Lib文件夹应该有.a库,include包含头文件 . 那些你需要为QT添加一个库 .
在.pro文件中:
在您的cpp代码中,重点是 .
当然,无论你需要什么......
所有cpp代码如下:
我希望这对需要在QT项目中起诉Dime的人有所帮助 .
一切都好,..