我在互联网上找不到合适的答案,所以我来找你。我们给了一个.dll
文件,我有一个.xml
文件来描述这个.dll
中的每个函数。
现在我想要包含此.dll
,但我在互联网上找到的每个答案都谈到.lib
和.h
,是否有办法添加.dll
文件到我的项目?
谢谢。
答案 0 :(得分:3)
Here你可以找到我为QtSerialPort写的内容,为udev动态加载符号。
This是代码的核心原则:
QLibrary myLib("mylib");
typedef void (*MyPrototype)();
MyPrototype myFunction = (MyPrototype) myLib.resolve("mysymbol");
if (myFunction)
myFunction();
如果您需要"全球"要从多个位置访问的实例,您还可以按如下方式实例化QLibrary
:
Q_GLOBAL_STATIC(QLibrary, udevLibrary)
答案 1 :(得分:0)
您可以使用QLibrary动态调用函数。以下示例在运行时从共享库中调用函数:
#include <QLibrary>
#include <QDebug>
typedef int (*call_func)(int arg1, int arg2);
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QLibrary library( "dynamic_library" );
library.load();
if( !library.isLoaded() )
{
qDebug() << "Cannot load library.";
return 0;
}
call_func func = (call_func)library.resolve( "function1" );
if( func)
{
func( 1, 2 );
}
return a.exec();
}
答案 2 :(得分:0)
您需要阅读.xml
文件并为其生成.h
文件。您可能还希望生成.def
文件。 .def
文件将用于生成链接器所需的导入库。
如果您可以显示xml文件的完整示例,那么利用Qt生成标头和定义文件应该是一件简单的事情。