我正在通过stackoverflow的问题,但他们都没有回答我的问题。 我有一个游戏引擎,我想在运行时加载玩家AI(用C ++编写)。
人工智能可能是一种方法或整个类,没关系。 我想我应该生成.dll,但我不知道该怎么做。 这个类应该看起来像这样:
class PlayerAI { void computeSomething(list of argument, Object& output) { // some logic } }
假设纯粹的Windows平台,因为没有指定 –
如果你想注入DLL,首先使用LoadLibrary函数获得一个句柄,如下所示:
HINSTANCE handleLib; handleLib = LoadLibrary(TEXT("YourDLL.dll"));
然后你可以获得一个函数指针指向lib中的一个特定函数。 喜欢这个:
FUNC_PTR func; func = (FUNC_PTR) GetProcAddress(handleLib, "yourFunc");
然后你可以这样调用函数:
(func) (L"TESTSTRING HERE");
完成后,调用FreeLibrary(libhandle)
如何声明一个函数作为导出在VS中是这样的(这是需要在你的DLL中标记你预先编译的函数:
__declspec(dllexport) int __cdecl yourFunc(LPWSTR someString) { //Code here... }
既然你提到已编译的DLL,你想看看LoadLibrary
和GetProcAddress
。 这就是如何执行DLL的运行时负载,并从中提取特定的功能。
示例可以在“ 使用运行时动态链接”下找到。