未解决的外部符号错误2001

时间:2015-09-15 11:28:27

标签: c++ visual-c++

当我尝试在另一个项目中使用我的dll项目时,我收到错误LNK2001。

我的标题文件的代码是

#ifdef VIZFUNCTIONSDLL_EXPORTS
#define VIZFUNCTIONSDLL_API __declspec(dllexport) 
#else
#define VIZFUNCTIONSDLL_API __declspec(dllimport) 
#endif

namespace VizFunctions
{
  class SUMCLASS
 {
     public:
        static VIZFUNCTIONSDLL_API double Test(double a);

 };
}

我的源文件的代码是

// VizFunctions.cpp : Defines the exported functions for the DLL application.

//

#include "stdafx.h"
#include "VizFunctions.h"
#include <stdexcept>

namespace VizFunctions
{

 double SUMCLASS::Test(double a)
 {
   return a;
 }

}

错误消息

Error 13 error LNK2019: unresolved external symbol "public: static double 
    __cdecl VizFunctions::SUMCLASS::Test(double)" 
    (?Test@SUMCLASS@VizFunctions@@SANN@Z) referenced in function "public: 
    int __thiscall CRectangle::PlugInNewGeom(int)" (?PlugInNewGeom@CRectangle@@QAEHH@Z) 
C:\Program Files (x86)\vizrt\Viz3\plugin\src\examples\rectangle\Rectangle.obj SampleRectangle

2 个答案:

答案 0 :(得分:1)

如果您没有链接到dll的导入库,则会看到此错误。导入库是一些粘合代码,它将为您加载DLL并自动映射导出的dll函数。

确保您的DLL项目在Properties - &gt;中创建导入库。链接器 - &gt;高级 - &gt;导入库

Import library setting

如果将dll 项目添加为可执行文件的依赖项(而不仅仅是dll),则会自动链接到导入库并解决链接错误。如果您没有将其作为依赖项,则需要将导入库明确添加到链接器 - &gt;输入 - &gt;附加依赖。

答案 1 :(得分:0)

看起来你没有包含在为新项目构建dll时生成的静态库。