「render()」という名前の関数を使用してDLLを作成し、それをアプリケーションに動的にロードしたいのですが、GetProcAddressがそれを見つけることができません。DLL.hは次のとおりです。
#ifdef D3D_API_EXPORTS
#define D3D_API_API __declspec(dllexport)
#else
#define D3D_API_API __declspec(dllimport)
#endif
D3D_API_API void render();
そしてここにDLL.cppがあります:
#include "stdafx.h"
#include "D3D_API.h"
#include <iostream>
D3D_API_API void render()
{
std::cout << "method called." << std::endl;
}
その機能を使おうとするアプリケーションは次のとおりです。
#include "stdafx.h"
#include <windows.h>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE myDLL = LoadLibrary( L"D3D_API.dll" );
if (myDLL == NULL) {
std::cerr << "Loading of D3D_API.dll failed!" << std::endl;
}
typedef void (WINAPI *render_t)();
render_t render = (render_t)GetProcAddress( myDLL, "render" );
if (render == NULL) {
std::cerr << "render() not found in .dll!" << std::endl;
}
return 0;
}
私の目標は、統合APIを使用して独自の.DLLを介してD3DとOpenGLの両方をサポートする3Dエンジンを作成することです。メモ帳で.dllを確認したところ、「render」という文字列がありました。