error C2732: linkage specification contradicts earlier specification for 'log'

时间:2022-08-21 22:16:16
  今天写了一个程序,主要是将源文件编译成dll。编译出现如下的错误:
F:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(501) : 
error C2732: linkage specification contradicts earlier specification for 'log'
F:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\math.h(501) : 
see declaration of 'log'
F:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xtgmath.h(104) :
error C2732: linkage specification contradicts earlier specification for 'log'
F:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xtgmath.h(104) : 
see declaration of 'log'
F:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xlocale(337) : warning C4530: 
C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc


程序里面没有声明和定义log函数,也没有使用math或xtgmath头文件。不知道为啥报错了。在我的头文件中GetDataFeed.h:
extern "C" void openConnect();
extern "C" void  closeConnect();

源文件:
#include "GetDataFeed.h
 void openConnect()
{
  //....
}
void  closeConnect()
{
//....
}
"


弄了一下午,就是搞不定,在math.h 中指向的那行为:
 double  __cdecl log(_In_ double _X);

在xtgmath.h指向的那行为:
_GENERIC_MATH1(log, _CRTDEFAULT)

1 个解决方案

#1


在要导出的函数前加上extern "C" _declspec(dllexport)

#1


在要导出的函数前加上extern "C" _declspec(dllexport)