假设:delphi动态库实现一个add(x,y)从x加到y,步长为1。
function add(x:UINT; y:UINT):UINT; cdecl export;
var
i : UINT;
begin
result := 0;
for i := x to y do
result := result + i;
end;
Exports
add;
这里用VC++6.0调用:
#include <windows.h>
#include <iostream.h>
HINSTANCE gLibCaculate = NULL;
typedef UINT (*ADD)(UINT x, UINT y);
ADD add;
void main()
{
// 装载动态库
gLibCaculate = LoadLibrary("Project2.dll");
if (gLibCaculate == NULL)
{
cout << "装载动态库Project2.dll失败!" << endl;
return;
}
//返回DLL中add()函数的地址
add = (ADD)GetProcAddress(HMODULE(gLibCaculate),"add");
if (FARPROC(add) == FARPROC(NULL))
{
cout << "动态库Project2.dll没有add()函数!" << endl;
}
else
{
cout << " add from 1 to 100 is " << add(1, 100) << endl;
}
// 释放动态库
FreeLibrary(gLibCaculate);
}