我需要构建一个将函数导出到c项目的c项目 这是我的c级: ** MyCppClass.h ** class MyCppClass{public:static void MyCppMethod()} ** MyCppClass.cpp ** void MyCppClass::MyCppMethod(){} *现在我需要为Method MyCppMethod(静
这是我的c级:
** MyCppClass.h **
class MyCppClass { public: static void MyCppMethod() }
** MyCppClass.cpp **
void MyCppClass::MyCppMethod(){}
*现在我需要为Method MyCppMethod(静态)创建一个接口.
我做到了:
** MyExport.h **
#define Export __declspec(dllexport) extern "C" void Export MyCppMethodWrapper();
** MtExport.cpp **
#include "MyCppClass.h" #include "MyExport.h" void MyCppMethodWrapper() { MyCppClass::MyCppMethod();}
而已 !
现在的C部分(不同的项目)
我将项目与MyExport.lib链接
** program.c **
#include "MyExport.h" ->does not compile because of the extern "C" int main() { MyCppMethodWrapper(); }
如果我不添加行:#include“MyExport.h”在program.c程序编译并正常工作,但我需要提供导出的标题(客户端需要标题),我想让程序使用那个标题.我怎么解决???
谢谢你的回答
你可以很容易地有条件地定义extern,如果这是你想要做的事情:#ifdef __cplusplus #define EXTERN_C extern "C" #else #define EXTERN_C #endif
然后:
EXTERN_C Export MyCppMethodWrapper();