wxWidgets 封装了不少系统API Wrapper Class。
下面看看如何动态加载一个 DLL,并调用其的一个函数。
注意:要使用 extern "C" 去导出函数,否则 C++ 的 name mangling 会让你头痛的。
-------------------------------------------------------------------------
#include <stdio.h>
#define FOOAPI __declspec(dllexport)
extern "C" {
FOOAPI void myfoo(int val)
{
printf("val = %d\n", val);
}
}
-------------------------------------------------------------------------
#include <wx/wx.h>
#include <wx/dynlib.h>
#include <windows.h>
typedef void (*FUNC_PTR) (int);
int main()
{
wxDynamicLibrary dl(_("foodll")); // ::LoadLibrary
if ( !dl.IsLoaded() )
return 1;
FUNC_PTR fn = (FUNC_PTR) dl.GetSymbol(_("myfoo")); // ::GetProcAddress
if ( fn )
{
fn(10);
}
return 0;
}
-------------------------------------------------------------------------
评论