怎样调用VC++的DLL(100分)

  • 主题发起人 主题发起人 charles_zou
  • 开始时间 开始时间
C

charles_zou

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大xia:
怎样用D5调用VC++的DLL?
按照调用D5写的DLL调用老是有错。
VC++写的要怎样修改?
 
是不是参数传递有问题?
 
>>按照调用D5写的DLL调用老是有错。
为什么呢?
VC++写得DLL只要知道名称、参数、返回就可以了
 
我有一个例子:(在同一个目录下有一个叫dll.dll的用vc++写的dll,
其中有一个叫hello的函数)

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

function hello:integer;far;external 'dll.dll';
procedure TForm1.Button1Click(Sender: TObject);

var
i:integer
begin
i:=hello();

end;

end.

希望对你有用!
 
请问VC++的DLL怎样写?
 
VC的Wizard会引导你的,主要的不同点在于DllMain和WinMain不同。
 
; 我和一个朋友 DarkSpy 就是用 VC、Delphi 合作写程序。下面是他用 VC5 写的代码:
#include <iostream.h> //New Test Dll Version 1.1
#pragma data_seg("TestDll")
#pragma data_seg()

int __declspec (dllexport) __stdcall Add(int a, int b)
{
return a+b;
}
还必需写一个DEF文件,内容如下:
SECTIONS
TestDll READ WRITE SHARED
EXPORTS
Add @1

这里有几点要注意:
1、函数中必需声明 _declspec、dllexport(函数必需导出,方能被其它程序调用)、
_stdcall(必需为 Windows 标准动态库方能被其它语言写的程序调用)
2、在 Def 文件中同样需要将函数导出。
3、在VC6中好像还必需要 DllMain 函数。

在 Delphi 中声明如下:
function x(x,y:integer):integer;stdcall;
external 'testdll' index 1;
由于采用 C++ 的方式,所以导出的函数名中有乱字符,(大家可以用
Delphi/Bin/tdump.exe 程序查看 DLL 文件),是无法用函数名调用的,必需由序号调用。
同样的,我们必需声明为 stdcall
但是,我不知道如何使用 DLL 中的类,不知有谁能告诉我?
 
谢谢!
但我想知道用VC6的程序改写为DLL的方法。
找不到VC的论坛。只好借用DELPHI的。
希望各位VC的高手指点。
 
难道大虾都睡着哪?
 
busy?
who can help me?
 
charles_zou:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
多人接受答案了。
 
后退
顶部