【发布时间】:2018-09-03 10:18:40
【问题描述】:
我正在编写这个 Editor.exe 程序,它加载一个 game.dll,获取 dll 中函数的地址,并传递一个指向 Core 对象的指针。
gameInitFuncPtr init =
(gameInitFuncPtr) GetProcAddress(LoadLibraryA("game.dll"),"gameInit");
init(&core); // core is already instanced somewhere, maybe on the stack
game.dll 包含定义 Core 类的 core.h。 Core 类被实现并编译到 Editor.exe 中。
在 dll 方面,从传递的对象指针调用函数会导致 未解析的外部符号
game.dll 对给定对象指针的调用示例如下:
void gameInit(ldk::Core* core)
{
_core->renderer.drawText("initializing...");
}
如何编译 dll 使其不会尝试在 dll 模块中查找例如 drawText() 实现?
1 - 请注意,这不是关于如何声明指向成员函数的指针的问题。
2 - 我知道如果我传递一个只有指向方法的指针的结构,它可以很容易地修复,但我真的对此很好奇。
3 - 我使用的是 Microsoft 的 cl 编译器 18.00,它是 Visual Studio 2013
附带的【问题讨论】:
标签: c++ c dll visual-studio-2013 unresolved-external