2011-03-02 79 views
0

我在VC++ Express 2010中创建了两个项目,一个是DLLTest,另一个是CODETest。如何使用从C++中的DLL导出的函数?

DLLTest,声明和定义一个函数func()如下:

__declspec(dllexport) void func() {...}; 

构建DLLTest项目成功,DLLTest.dll和DLLTest.lib文件创建。

CODETest,我想使用导出的函数,如下所示:

#include "DLLTest.h" 
int main() 
{ 
    ... 
    func(); 
    ... 
    return 0; 
} 

错误发生时生成CODETest项目--->“解析外部符号 ”空隙__cdecl letterList(无效)“,当我添加DLLTest.lib到CODETest项目的目录,成功打造过程。

我不知道为什么?感谢您的帮助。

+0

你刚刚回答了你自己的问题:你必须包含你想要使用的DLL函数的'lib'文件。 – 2011-03-02 11:30:58

+0

是的,虽然问题解决了,但我不知道为什么?添加lib文件时为什么要成功构建。 – Jason 2011-03-02 11:37:41

回答

2

这似乎不太可能,尤其是“func”转换为“letterList”的部分。不过,你必须告诉链接器链接DLL的导入库,以便它可以解析从该DLL导入的标识符。在MSVC中最简单的方法是:

#include "DLLTest.h" 
#pragma comment(lib, "dlltest.lib") 

in CodeTest.cpp。 #pragma与链接器的Additional Dependencies设置完成相同的功能。

+0

'#pragma comment(lib,“dlltest.lib”)'告诉链接器链接DLL的导入库? – Jason 2011-03-02 11:52:56