问题:如何导入没有头和库文件的dll

Qt: how to import dll without header and lib files

本文关键字:文件 dll 何导入 导入 问题      更新时间:2023-10-16

我想包含此网站的dllhttp://projnet.codeplex.com/但它只提供了一个dll文件和一个xml文件,不包括头文件或lib文件。是否可以使用之类的东西导入dll

QLibrary geolib("ProjNet.dll");
geolib.load();

如果它有效(在本例中geolib.islooaded为true),那么我如何在Qt中使用它?

非常感谢!!!

这是一个用于.net框架的托管DLL,这解释了为什么它没有头文件。您将无法直接使用它。您需要包装它。例如,使用COM或作为混合模式C++/CLI DLL。

您可以以这种方式仅使用导出的函数(为此,您需要知道函数的名称和原型)。加载dll后,应该调用解析方法。例如,您希望使用从MyModule.dll导出的函数foo

extern "C" Q_DECL_EXPORT void foo(int a)

你需要创建一个原型:

typedef void (*MyProto)(int)

然后解决:

QLibrary myDll("MyModule.dll");
if (myDll.load())
{
    MyProto mp = reinterpret_cast<MyProro>(myDll.resolve("foo"));
}

不幸的是,ProjNet.dll没有导出。