C ++ / CLI包含本机函数,参数默认为NULL

时间:2015-05-18 21:19:19

标签: c# c++-cli

我希望这不是一个骗局;我担心我不知道搜索是否正确,所以我只会解释我的问题。

我正在用C ++ / CLI包装一个大型的第三方C / C ++ API,这样我就可以在.Net C#插件框架中使用这些最终的程序集来处理更大的应用程序。
API确实附带了一些文档,头文件,dll和lib文件,因此第一次安装很简单:在Visual Studio 2013中,我启动了一个CLR /类库项目,将文件添加到文件夹,添加include目录/依赖项/使用目录到配置表。 但是,尝试使用API​​的导出全局函数会抛出错误列表,因为参数默认为NULL

 APPIMPEXP void GetPartner(TCHAR* pHst = NULL)

失败,因为(C2065)'NULL':未声明的标识符

所以在加入之前我尝试了一个又一个丑陋的黑客

#define NULL nullptr;

同一行现在有错误(C2143)语法错误:缺少')'之前;

#define NULL 0

同样的错误。

extern "C"
{
  #include "apidll.h"
}

相同错误

在此之前我用CLI做的很少,但我很惊讶我这么早就难过了。是我唯一的选择PInvoke?我最初试图避免这种情况,因为API严重依赖于回调,我最终确定了一种将委托编组为回调的方法。

1 个答案:

答案 0 :(得分:0)

#define NULL nullptr;

这个问题让我觉得你做过的事情中最正确的事情(虽然有些精通C ++的人可能会有不同的看法)。但是,那里有一个错误:删除分号。请记住,#define是简单的文本替换,因此该方法变为GetPartner(TCHAR* pHst = nullptr;),这是不正确的。