【发布时间】: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()
};
}
-
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