【问题标题】:C++/CLI how to pass integer pointer to C++ APIC++/CLI 如何将整数指针传递给 C++ API
【发布时间】:2017-02-10 21:16:03
【问题描述】:

看起来我在这里犯了一个基本错误。我有一个 3 方 C++ 库(test.dll),其中有一个定义如下的 API。我通过加载库、获取 API 并调用来调用这个 API。我是 C++ CLI 的新手,任何解决问题的方法都会有所帮助。提前致谢。

第 3 部分库导出 API FUNCTION_EXPORT void STDCALL GetVersion(UINT16& 版本); 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 &'

代码 sn-p 是为了说明我在尝试什么。主要问题在这里 UINT16专业; GetVersionApi(&uiMajor);

正确的称呼方式是什么。请帮忙。

【问题讨论】:

    标签: c++-cli


    【解决方案1】:
    GetVersion(UINT16& version);
    

    那不是整数指针,那是整数引用。您不需要输入任何额外的字符来传递引用。

    GetVersionApi(uiMajor);
    //            ^ no "&"
    

    【讨论】:

      猜你喜欢
      • 2012-10-15
      • 1970-01-01
      • 2022-01-08
      • 2017-10-02
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      • 2011-05-19
      • 2011-04-17
      相关资源
      最近更新 更多