C++/CLI 如何将整数指针传递给 C++ API
C++/CLI how to pass integer pointer to C++ API
看来我犯了一个基本错误。我有一个 3 方 C++ 库(test.dll),其中有一个 API 定义如下。我通过加载库、获取 API 和调用来调用此 APi。我是 C++ CLI 的新手,任何解决问题的建议都会有所帮助。提前致谢。
第 3 个零件库已导出 API
FUNCTION_EXPORT void STDCALL GetVersion(UINT16& version);
typedef void (STDCALL *GETVERSION)(UINT16);
我需要从 C++ Cli 调用它
头文件
MyTest.h
namespace MyTest {
public ref class TestClass
{
public:
HMODULE module;
String^ version;
void TestMethod()
};
}
Cpp 文件
MyTest.cpp
namespace MyTest {
TestClass::TestMethod()
{
this->module = LoadLibrary(engineDllPath);
if (!this->module)
{
return String::Format("LoadLibrary failed");
};
// Get engine version
GETVERSION GetVersionApi = (GETVERSION)GetProcAddress(module, "GetVersion");
if (!GetVersionApi)
{
return;
}
UINT16 major;
GetVersionApi(&uiMajor);
}
}
出现编译错误
错误 C2664:'void (UINT16 &)':无法将参数 1 从 'UINT16 *' 转换为 'UINT16 &'
代码片段是为了说明我正在尝试什么。主要问题在这里
UINT16专业;
GetVersionApi(&uiMajor);
正确的调用方式是什么。请帮忙。
GetVersion(UINT16& version);
那不是整数指针,而是整数引用。您无需键入任何额外字符即可传递引用。
GetVersionApi(uiMajor);
// ^ no "&"
看来我犯了一个基本错误。我有一个 3 方 C++ 库(test.dll),其中有一个 API 定义如下。我通过加载库、获取 API 和调用来调用此 APi。我是 C++ CLI 的新手,任何解决问题的建议都会有所帮助。提前致谢。
第 3 个零件库已导出 API FUNCTION_EXPORT void STDCALL GetVersion(UINT16& version); typedef void (STDCALL *GETVERSION)(UINT16);
我需要从 C++ Cli 调用它
头文件
MyTest.h
namespace MyTest {
public ref class TestClass
{
public:
HMODULE module;
String^ version;
void TestMethod()
};
}
Cpp 文件
MyTest.cpp namespace MyTest { TestClass::TestMethod() { this->module = LoadLibrary(engineDllPath); if (!this->module) { return String::Format("LoadLibrary failed"); }; // Get engine version GETVERSION GetVersionApi = (GETVERSION)GetProcAddress(module, "GetVersion"); if (!GetVersionApi) { return; } UINT16 major; GetVersionApi(&uiMajor); } }
出现编译错误 错误 C2664:'void (UINT16 &)':无法将参数 1 从 'UINT16 *' 转换为 'UINT16 &'
代码片段是为了说明我正在尝试什么。主要问题在这里 UINT16专业; GetVersionApi(&uiMajor);
正确的调用方式是什么。请帮忙。
GetVersion(UINT16& version);
那不是整数指针,而是整数引用。您无需键入任何额外字符即可传递引用。
GetVersionApi(uiMajor);
// ^ no "&"