加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

混淆c和c的问题

发布时间:2020-12-16 09:26:18 所属栏目:百科 来源:网络整理
导读:我需要构建一个将函数导出到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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读