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()
};
}
  1. 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 "&"