Visual Studio 2010中的DLL链接错误

时间:2014-09-17 19:23:33

标签: c++ visual-studio-2010

我正在一个项目中创建一个dll + lib,并试图在另一个项目中使用该函数。

Project_A:

fileA.h:

#ifdef COMPILE_A
#define A_EXPORT __declspec(dllexport)
#else
#define A_EXPORT __declspec(dllimport)
#endif

 class A_EXPORT Class_A
   {
     void printFunction();
    }


fileA.cpp:

#include "fileA.h"
void fileA::printFunction()
{
   cout<<"bla bla";
}

Project_B:

fileB.cpp

#include "fileA.h"
int main()
{
  fileA obj();
  obj.printFunction();
 }

在fileA.cpp的预处理器定义中,我定义了COMPILE_A。这个项目被编译并生成一个dll和lib文件。

我通过链接Project_A的构建中的.lib文件将其链接到Project_B。我还链接了Project_B中的头文件。

我可以导入这些头文件并进行编译。 但是当我尝试调用printFucntion()时,我得到了

错误1错误LNK2001:未解析的外部符号&#34; __ declspec(dllimport)public:__ thishisall

有点错误。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

我使用向导创建示例项目。要解决链接错误,我必须在file_b项目中添加一个引用到file_a项目。

此外,代码没有编译行

   fileA obj();
你可能想要

   fileA obj;

有关完整的VS解决方案,请参阅https://github.com/kc1073/Samples/下的TwoProj项目。

KC