调用在Visual Studio中使用Netbeans编写的DLL

时间:2015-07-17 09:40:35

标签: c++ visual-studio-2010 netbeans dll

假设我根据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文件。显然,这是一个糟糕的尝试,但我能想到的最好。

有人知道如何:

  1. 在Netbeans中创建*.lib文件
  2. 或者将我的Netbeans DLL与MSVS2010正确连接或分别解决我的问题?

2 个答案:

答案 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中加载库:

  1. 在代码中添加#include语句
  2. 在 - >中添加包含目录 配置属性/ VC ++目录/包含目录(单击并编辑,添加新条目)
  3. 为* .lib文件添加库目录 - >
    配置属性/ VC ++目录/库目录(单击并编辑,添加新条目)

  4. 添加要链接的库 - >配置属性/链接器/输入/附加依赖项(示例library.lib;

  5. 将DLL文件放在最终可执行文件的目录中