msdn:http://msdn.microsoft.com/en-us/library/726yhbsw.aspx
http://blog.youkuaiyun.com/hylaking/archive/2007/09/24/1798763.aspx
函数从C到C++迁移,出现C2732或LNK2001错误
1.原来的函数由C实现,声明如下:
__declspec(dllexport) int RegisterMacro(char *macro_define, char *macro_value);
__declspec(dllexport) int GetMacroCount(void);
2.现在由STL实现,连接出错, error LNK2001
3.更改声明:
extern "C"__declspec(dllexport) int GetMacroCount(void);
编译出错, error C2732
4.更改声明
#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllexport) int RegisterMacro(char *macro_define, char *macro_value);
__declspec(dllexport) int GetMacroCount(void);
#ifdef __cplusplus
}
#endif /* __cplusplus */
5.通过!
http://topic.youkuaiyun.com/u/20071022/17/e9d521c4-3598-46c2-8af5-b2525e1bb584.html?seed=1657377121
在一个 .c文件里实现,在一个.h里声明。
cpp文件包含这个.h时用extern "C"括起:
extern "C" {
#include "x.h"
}