VC工具:VS2005
DELPHI 工具: DELPHI 7
VS2005 新建DLL
新建-项目 保存时选择 DLL
代码
// testdll.cpp : 定义 DLL 应用程序的入口点。
//
#include "stdafx.h"
#ifdef _MANAGED
#pragma managed(push, off)
#endif
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
HRESULT __stdcall TestAdd(int i, int j)
{
return i + j;
}
#ifdef _MANAGED
#pragma managed(pop)
#endif
代码很简单,就一个 TestAdd
注意 不能使用VC的 extern"C" __declspec( dllexport ) HRESULT __stdcall TestAdd(int i, int j)
下一步,新建一个def文件(使用记事本新建,保存为def),VC默认为MFC的DLL带DEF的,其他的不带。
DEF代码:
LIBRARY "testdll"
EXPORTS
TestAdd @1
然后将def加入VS2005,VC6工程中,只要有DEF文件并将其添加到工程中,VC6就可以自动地生成DLL与其相应的Lib文件了。
但是VS2005不一样,需要指定DEF文件
工程 > 属性中的链接器,然后找到"输入"这一项. 在 "模块定义文件" 中输入 testdll.def.
然后编译
DELPHI 调用
TestAddFun = function (I: Integer; j: Integer): HRESULT; stdcall;
var
TestFun: TestAddFun;
H: HMODULE;
begin
H := LoadLibrary('testdll.dll');
if H <> 0 then
TestFun := GetProcAddress(H, 'TestAdd');
if Assigned(@TestFun) then
ShowMessage(IntToStr(TestFun(1, 20)));
FreeLibrary(H);
至此,调用成功
原文地址:http://www.cnblogs.com/chengxin1982/archive/2010/01/06/1640052.html