我需要构建一个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)
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |