VC与Delphi之间动态链接库互相调用

原创 2001年06月25日 17:30:00

VCDelphi之间动态链接库互相调用

Delphi 调用VCDLL

VCDLL声名格式:

Extern “C” void __declspec(dllexport) __stdcall ShowMess(HWND hwnd, char* mess);

输出格式为:_ShowMess@8,“8”为函数参数字节数

为了避免名称分裂,可采用以下方法解决:

1.声明中不加__stdcall,采用VC默认格式__cdecl,但在Delphi中要注明调用格式为cdecl

2.在VC工程中添加def文件,如:

LIBRARY

EXPORTS

ShowMess @1

DLL中输出函数名称不分裂。

Delphi中调用格式:

Procedure ShowMess (h:HWND; mess:PChar); Stdcall;{Cdecl;} external LibName;

如无StdcallCdecl声名,Delphi默认Register(FastCall)调用格式。

注意DelphiVC的对齐格式不同,在VC中定义结构时要用以下格式:

#pragma pack(4)

//结构定义

#pragma pack()

常用工具:

TDump.exeDelphi 4 C++ Builder 3 提供

Impdef.exe Implib.exe C++ Builder 3提供

DumpBin.exeVC5.0提供

Lib.exeVC5.0提供

VC调用DelphiDLL

Delphi中的声名格式:

Function ShowDialog( hMainWnd:THandle; Msg:PChar ):integer; stdcall;

输出到Dll文件中时,名称不分裂。

VC中的调用格式:

extern "C" __declspec(dllimport) int __stdcall ShowDialog( HWND hwnd,char* Msg );

.如带有__stdcall,则要求Lib文件中对应函数名称分裂,可有以下步骤生成Lib文件:

.用Impdef.exe生成def文件,格式为:Impdef def文件名 dll文件名

.手工调制def文件参数,如ShowDialog改为ShowDialog@8

.用Lib.exe生成lib文件,格式为:Lib /def:def文件名

.如声名中无__stdcall,默认调用格式仍为stdcall,但不要求名称分裂,用以下批处理文件MkLib.bat可生成Lib文件:

@echo off

if %1.==. goto error

impdef %1.def %1.dll

lib /def:%1.def

goto end

:error

echo Usage: MkLib DllName

echo Note: Don't add extension ".dll" to parameter "DllName"

:end

VC与Delphi之间动态链接库互相调用

VC中DLL声名格式: Extern “C” void __declspec(dllexport) __stdcall ShowMess(HWND hwnd, char* mess);输出格式为:_S...
  • vincent__hu
  • vincent__hu
  • 2005年09月22日 14:59
  • 621

VC调用Delphi制作的动态链接库如何互相传递字符串

1、VC to Delphi Delphi源程序: library ExportChartData;  uses    SysUtils,    Classes;  ...
  • slj_win
  • slj_win
  • 2014年07月29日 22:19
  • 1268

Delphi中怎么调用VC++创建的动态链接库

Delphi以其独特的面向控件的研发方式、强大的数据库功能、快速的编译技术及简单易学的编程特性,使得他自发布之日起即格外引人注目,许多程式员也因此将他作为最佳选择的研发工具。然而,Delphi在科学计...
  • slj_win
  • slj_win
  • 2014年07月29日 21:31
  • 1158

vc和delphi之间动态链接库互相调用_delphi教程

来源: 作者: 发布时间:2007-12-27      Delphi 调用VC的DLL     VC中DLL声名格式:   Extern “C” v...
  • dlyhlq
  • dlyhlq
  • 2008年03月25日 21:43
  • 791

VC各类之间的调用函数总结

VC各类之间的调用函数总结 最近在网上看到一些关于在文档类,视图类,框架类,应用程序类,自定义类中获取其它四个类的方法,现总结如下: GET  App、、、、、AfxGetInstanceHandle...
  • lyzhm
  • lyzhm
  • 2007年06月05日 11:38
  • 657

三个类之间的相互调用实现

三个类之间的相互调用         由来:在项目开发的时候,定义了三个核心类(ClassA,ClassB, ClassC),三个类之间存在调用关系如下:ClassC是管理类,需要调用ClassA, ...
  • wojiushiwo987
  • wojiushiwo987
  • 2013年08月10日 01:22
  • 4752

python类之间方法互相调用

all.py from son import * class ALL():     def __init__(self):         self.mSon = SON(self)  ...
  • lovemysea
  • lovemysea
  • 2017年06月20日 22:18
  • 2295

python类之间调用

方法1: class A:     def __init__(self):         self.arr1 = "i am xiaobai"        def print_o...
  • sunboyhch
  • sunboyhch
  • 2013年05月08日 16:48
  • 1677

两个APP之间怎么调用?

(1):通过显示Intent 启动    首先:配置好B app 的action,即AndroidManifest.xml中声明      A app 调用需要知道B app对应的act...
  • zuo8787
  • zuo8787
  • 2016年05月11日 13:34
  • 912

delphi窗体之间的相互传值

效果图如下所示 Form1代码 //定义一个用户信息类 type   TUsersInfo=class     //声明三个全局变量     public        User...
  • wang463584281
  • wang463584281
  • 2014年03月22日 18:17
  • 1031
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC与Delphi之间动态链接库互相调用
举报原因:
原因补充:

(最多只允许输入30个字)