混合c和c ++的问题

Lir*_*ran 3 c c++

我需要构建一个c ++项目,将函数导出到c项目这是我的c ++类:

**MyCppClass.h**

class MyCppClass
{
public:
static void MyCppMethod()
}
Run Code Online (Sandbox Code Playgroud)

**MyCppClass.cpp**

void MyCppClass::MyCppMethod(){}
Run Code Online (Sandbox Code Playgroud)

*现在我需要为Method MyCppMethod(静态)创建一个接口.

我做到了:**MyExport.h**

#define Export __declspec(dllexport)
extern "C" void Export MyCppMethodWrapper();
Run Code Online (Sandbox Code Playgroud)

**MtExport.cpp**

#include "MyCppClass.h"
#include "MyExport.h"

void MyCppMethodWrapper() { MyCppClass::MyCppMethod();}
Run Code Online (Sandbox Code Playgroud)

而已 !

现在C部分(不同的项目)我将项目与MyExport.lib
**program.c**链接

#include "MyExport.h"        ->does not compile because of the extern "C"
int main()
{
  MyCppMethodWrapper();   

}
Run Code Online (Sandbox Code Playgroud)

如果我不添加行:#include "MyExport.h"在program.c程序编译并正常工作,但我需要提供导出的标题(客户端需要标题),我想让程序使用该标题.我怎么解决???

谢谢你的回答

小智 5

你可以很容易地有条件地定义extern,如果这是你想要做的事情:

#ifdef __cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C
#endif
Run Code Online (Sandbox Code Playgroud)

然后:

EXTERN_C Export MyCppMethodWrapper();
Run Code Online (Sandbox Code Playgroud)