0
在Visual Studio中是否可以使用C++库和使用C编写的另一个项目在同一个解决方案中,这个库使用C?在Visual Studio中使用相同的解决方案从C++库调用函数的C编译项目
我在库的头什么:
#ifdef __cplusplus
#define EXTERN extern "C"
#else
#define EXTERN
#endif
#ifndef LIB_API
#ifndef LIB_STATIC
#ifdef LIB_EXPORT
#define LIB_API EXTERN __declspec(dllexport)
#else
#define LIB_API EXTERN __declspec(dllimport)
#endif
#else
#define LIB_API
#endif
#endif
LIB_API uint32_t Func(int8_t *arg);
我想静态链接到从我的C-项目这个库,所以我选择从库项目依赖关系,定义了预处理器定义宏LIB_STATIC,选择“编译为C代码(/ TC)”选项并调用此函数。我得到的是链接错误
error LNK2019: unresolved external symbol _Func referenced in function _main
当我看着LIB文件,我可以找到有什么样Func键,而不是_Func。我做错了什么?
(忘了补充,有图书馆的一个.cpp模块在相应的功能实现)从Angew
接听和AnatolyS
我们需要在静态库情况下,这样的定义LIB_API为extern正确的预处理块将是:
#ifndef LIB_API
#ifndef LIB_STATIC
#ifdef LIB_EXPORT
#define LIB_API EXTERN __declspec(dllexport)
#else
#define LIB_API EXTERN __declspec(dllimport)
#endif
#else
#define LIB_API EXTERN
#endif
#endif
_Func = FUNC键,为了包括所需要的库,你将需要添加这些项目下 - >属性 - >链接器 - >输入 - >附加依赖: – 2013-03-05 10:53:43
'在预处理器定义定义宏LIB_STATIC,选择“编译为C代码(/ TC)”选项 - 我明白你在C项目中做过,而不是在C++ lib中,对吧? – 2013-03-05 10:59:51
在静态库的情况下不应该将'LIB_API'定义为'EXTERN'吗? – Angew 2013-03-05 11:03:22