c++ - 调用外部函数,无法指定类型 C++/MVS
问题描述
我正在按照本教程访问存储在 3rd 中的函数.dll
。(为了充分披露,我并不是要破解视频游戏,我只需要使用相同的工具)。
我正在使用 Visual Studio 2017 (v141),我当前的代码如下所示:
if (HMODULE const hLib = LoadLibraryA(PATH_TO_LIB)) {
typedef IServer(__cdecl * _Create)(char* version);
_Create Create_addr = (_Create)GetProcAddress(hLib, "Create");
}
我试图调用IServer Create(char* version)
存储在 中的函数.dll
,类型IServer
也在.dll
. 运行后dumpbin
我可以确认函数导出正确。
我还导入了包含IServer
定义的头文件。
问题是,根据视觉工作室:
- 取而代之的
__cdecl *
是“expected a type specifier
” - 在
(char* GameServerInterfaceVersion)
,它声称“a function returning function is not allowed
” - 在最后一行,
_CreateGameServer
显然是一个“unidentified identifier
”
我相信我已经完全按照教程进行操作,并且看不到我做错了什么。
如何让 VS 识别这些类型?
解决方案
你必须先定义 IServer 然后错误就会消失
推荐阅读
- go - 如何在 Visual Studio Code 中使用 Cgo 调试 Go
- mysql - 在presto MySQL中将时间戳转换为字符串?
- apache-spark - spark 3.2.0 与 2.4.8 中的结构化流检查点位置
- telegram - 如何将照片转发给作为机器人 Telethon 电报登录的用户
- python - 使用烧瓶会话查询仅获取单个字段数据
- r - 从单个数据库中以 R 降价创建个人(逐行/每个参与者)pdf 报告
- php - Laravel 8 - Windows - 包发现 post-autoload-dump 事件返回错误代码 255
- python - 如何用某个类刮掉href标签?
- google-apps-script - 如何为每个谷歌应用脚本创建一个日历事件的链接(url)
- flutter - Drawer Widget - 更改 Scaffold 正文内容