C ++中未解析的外部符号

时间:2014-04-03 19:40:47

标签: c++ visual-studio-2010

我在VS2010下开发的C ++ Dll程序中定义了三个函数。

int __stdcall Scan()
{
...
}

int __stdcall Setup(int e_time, double s_value, double cs_value, double gain, int nIm, char* name) 
{
...
}

int __stdcall TearDown()
{
....
}

我在Program.def中将它们定义为

LIBRARY
EXPORTS
   Scan @1
   Setup @2
   TearDown @3

我还有一个headefile Program.h

//DLL Export-Import definitions
#define BUILD_DLL

#ifdef BUILD_DLL
#define EXPORT __declspec(dllexport)
#else
#define EXPORT __declspec(dllimport)
#endif

但我收到了一些错误:

  • " 49错误LNK2001:未解析的外部符号在Program.def第1行"
  • 中扫描
  • " 51错误LNK2001:未解决的外部符号在Program.def第1行和第34行中设置;

  • " 51错误LNK1120:Program.lib中有2个未解析的外部符号"

错误消息没有抱怨定义的第三个函数。我在链接器中使用了/ MAP选项,并为映射文件定义了文件名,但是我没有获得MAP文件输出来检查这些sysmbol的定义方式。我不能使用 dumpbin 程序,因为build还没有创建一个dll文件。

我被困住了。任何帮助/指针将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

您需要声明C风格的链接或C ++ 名称修饰会使事情变得混乱。

对每个功能使用

extern "C" {
    /*your function here*/
}