C ++ / CLI如何将整数指针传递给C ++ API

时间:2017-02-10 21:16:04

标签: c++-cli

看起来我在这里犯了一个基本错误。我有一个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.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);
}
}
  1. Cpp文件

      <!-- navigation bar -->
      <nav>
        <ul>
          <li><a href="#" data-target="home.html">HOME</a></li>
          <li><a href="#" data-target="work.html">MY WORK</a></li>
          <li><a href="#" data-target="about.html">ABOUT ME</a></li>
          <li><a href="#" data-target="services.html">SERVICES</a></li>
          <li><a href="#" data-target="contact.html">CONTACT ME</a></li>
        </ul>
      </nav>
    
      <!-- content div -->
    
      <div id="content">
    
      </div>
    
      <!-- footer -->
      <section>
      </section>
      <footer>
        <p>Copyright &copy; 2017, All Rights Reserved</p>
      </footer>
    </div>
    
  2. 出现编译错误  错误C2664:'void(UINT16&amp;)':无法将参数1从'UINT16 *'转换为'UINT16&amp;'

    代码段是为了让我知道我在尝试什么。主要问题在这里 UINT16专业; GetVersionApi(安培; uiMajor);

    调用它的正确方法是什么。请帮忙。

1 个答案:

答案 0 :(得分:1)

GetVersion(UINT16& version);

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

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