假设我根据this youtube tutorial在Netbeans中创建了一个DLL,我可以继续从另一个C ++源文件中调用DLL。 这是一步一步的过程,虽然DLL使用Netbeans工作正常!
我创建了一个新的空项目(在我的例子中是Visual C ++ Win32控制台应用程序)。我将C ++源文件添加到源文件夹。 这是我的代码
#include“.. \ SampleLib \ SampleLib.h”
#include
int main(){
SampleClass * ptr = new SampleClass();
ptr-> TestFunc();
返回0; }
然后我输入包含目录,库directoy和链接器输入,最后在其他依赖项下输入.dll文件
但是,我不能用来自Microsoft Visual Studio 2010的C ++源文件(目前使用Express版本)调用它。
我包含目录并包含头文件。然后我将源文件链接到“附加依赖项”的DLL。
我的错误信息是:
1> C:\ Users \ misefe \ Documents \ NetBeansProjects \ SampleLib \ dist \ Debug \ MinGW-Windows \ libSampleLib.dll:致命错误LNK1107:UngültigesderbeschädigteDatei:Lesen bei 0x2E0nichtmöglich。
我担心问题是没有创建*.lib
文件。我正在关注如何在MSVS2010中实现DLL的另一个教程。唯一的区别是不是在*.lib
文件中添加*.dll
文件。显然,这是一个糟糕的尝试,但我能想到的最好。
有人知道如何:
*.lib
文件答案 0 :(得分:0)
阅读Netbeans C/C++ Projects Quick Start Tutorial - 在步骤创建C和C ++项目中特别注意向导 - 您可以在静态或动态库项目之间进行选择。
选择静态以创建LIB,动态创建DLL。
答案 1 :(得分:0)
如果您只使用DLL,则可以使用LoadLibrary函数。它需要你的DLL的路径并加载它。然后使用GetProcAdress方法获取指向DLL中方法的指针。但它有一个巨大的缺点。实际上由于C ++ name mangling,DLL中的方法名称和代码中的方法名称将不同。 如果您真的只想使用DLL,可以使用extern "c".
来展平您的课程如果您可以使用静态库,您可以这样做
使用netbeans创建静态库
- 创建一个新的C ++项目
- 选择C / C ++静态库
您可以使用以下步骤在Visual Studio中加载库:
为* .lib文件添加库目录 - >
配置属性/ VC ++目录/库目录(单击并编辑,添加新条目)
添加要链接的库 - >配置属性/链接器/输入/附加依赖项(示例library.lib;
将DLL文件放在最终可执行文件的目录中