看起来我在这里犯了一个基本错误。我有一个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);
}
}
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 © 2017, All Rights Reserved</p>
</footer>
</div>
出现编译错误 错误C2664:'void(UINT16&amp;)':无法将参数1从'UINT16 *'转换为'UINT16&amp;'
代码段是为了让我知道我在尝试什么。主要问题在这里 UINT16专业; GetVersionApi(安培; uiMajor);
调用它的正确方法是什么。请帮忙。
答案 0 :(得分:1)
GetVersion(UINT16& version);
这不是一个整数指针,它是一个整数引用。您不需要输入任何额外的字符来传递引用。
GetVersionApi(uiMajor);
// ^ no "&"