C++/CLI 包括参数默认为 NULL 的本机函数

C++/CLI Including Native Functions with parameters defaulted to NULL

我希望这不是骗局;我担心我不知道应该搜索什么,所以我将解释我的问题。

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

 APPIMPEXP void GetPartner(TCHAR* pHst = NULL)

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

所以在收录之前,我尝试了一个又一个丑陋的黑客攻击

#define NULL nullptr;

同一行现在在 ;

之前有错误 (C2143) 语法 error:missing ')'
#define NULL 0

同样的错误。

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

同样的错误

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

#define NULL nullptr;

我认为这是您尝试做的最正确的事情(尽管更精通 C++ 的人可能有不同的意见)。但是,那里有一个错误:删除分号。请记住,#defines 是简单的文本替换,因此该方法变为 GetPartner(TCHAR* pHst = nullptr;),这是不正确的。