问:如何在没有头文件和lib文件的情况下导入dll

时间:2013-12-02 22:54:44

标签: c++ qt dll

我想在这个网站http://projnet.codeplex.com/中包含一个dll但它只提供一个dll文件和一个xml文件,不包含头文件或lib文件。是否可以使用

之类的东西导入dll
QLibrary geolib("ProjNet.dll");
geolib.load();

如果它有效(在这种情况下geolib.isloaded为true)那么我如何在Qt中使用它?

非常感谢!!!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您只能以这种方式使用导出的函数(为此您需要知道函数的名称和原型)。加载DLL后,您应该调用resolve方法。例如,您想使用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没有导出。