VC 编写 stdcall 方式的DLL
来源:互联网 发布:editplus怎么运行java 编辑:程序博客网 时间:2024/05/21 22:46
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
- VC 编写 stdcall 方式的DLL
- VC 编写 stdcall 方式的DLL
- stdcall 以及 其他的dll调用方式
- dll中的函数的调用方式统一用stdcall
- VC DLL的编写调用
- 如何在QT下调用VC/MFC编写的DLL,分为两种方式。
- VC中.dll文件的编写
- VC中.dll文件的编写
- Delphi调用VC++6.0编写的Dll
- VC 使用 MinGW编写的dll
- vc 编写dll
- VC编写DLL
- VC编写DLL
- VC编写DLL
- VC编写DLL教程
- VB调用VC dll的返回方式
- stdcall与DLL
- stdcall与DLL
- 再谈二叉树的层次(宽度)遍历
- zlib-FAQ
- css笔记
- zlib 1.2.8 Manual
- incredibuild 单机模式(伪)
- VC 编写 stdcall 方式的DLL
- Android——源码角度分析View的scrollBy()和scrollTo()的参数正负问题
- javascipt学习笔记
- 设计模式(12)-结构型模式-Proxy模式
- Android开发之根据不同分辨率获取不同分辨率下的drawable\layout\values
- Cocos2d-x API风格说明
- mysql中使用limit要使用order by排序
- spring MVC笔记3——传递参数和解决中文乱码
- VC++深入详解(5):MFC对话框(一)