当前位置 : 主页 > 编程语言 > c++ >

混淆c和c的问题

来源:互联网 收集:自由互联 发布时间:2021-06-23
我需要构建一个将函数导出到c项目的c项目 这是我的c级: ** MyCppClass.h ** class MyCppClass{public:static void MyCppMethod()} ** MyCppClass.cpp ** void MyCppClass::MyCppMethod(){} *现在我需要为Method MyCppMethod(静
我需要构建一个将函数导出到c项目的c项目
这是我的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();
网友评论