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;)
,这是不正确的。
我希望这不是骗局;我担心我不知道应该搜索什么,所以我将解释我的问题。
我正在用 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;)
,这是不正确的。