现在我做了一个很简单的dll,可以在delphi中调用(用的是静态链接),但在vb中却出现错误,说“用户定义类型未定义”。是不是delphi编好的dll在编写过程中还要加一些什么,才可以在vb中使用?(比如dll中的初始化代码和退出码,我不知道是什么意思,用来干什么)。还有,我已经把这个dll文件和调用它vb程序放在一个目录下了,vb应该不会找不到这个dll文件吧?
解决方案 »
- 天快亮了,我泡论坛的时限也快到了。
- 用DCOM做三层,客户端程序运行后报rpc服务器不可用,这是怎么回事,如何解决?
- 请教关于 OleVariant 的问题
- 专门开贴送分给我的好兄弟,人生自是有情痴,近来接分
- 用FastReport如何在一个报表上打印两个主表的记录?两个主表无关联,即是打完一个主表,再打另一个主表。
- DelPhi开发数据库怎么办?
- Bmp与流媒体的问题?
- 请问在DLL中可以存放常量,供其它程序调用吗?
- 图像压缩问题!!
- Delphi资深程序员彻底廉价出售至北京
- 请教怎样在线更新本地数据?
- 一个delphi初学者的毕业设计,遇到了很大的阻力,我从来没有搞过delphi,看了一头雾水。代为求助!高分相赠!
library dlladd;
uses
SysUtils,
Classes,
add in 'add.pas';
{$R *.RES}
exports
addnew;
begin
end.unit add;
interface
function addnew(x,y:integer):integer;stdcall;
implementation
function addnew;
begin
addnew:=x+y;
end;
end.在vb中调用:
Private Declare Function addnew Lib "dlladd" (ByVal x As integr, ByVal y As Integer) As Integer
就是这么简单的一个程序呀,怎么回事呢?
Private Declare Function addnew Lib "dlladd" (ByVal x As integr, ByVal y As Integer) As IntegerLib 后面应该要写清楚具体的路径,如“D\dlladd.dll" ,因为程序默认到C盘系统路径下面查找
DLL文件。
还是不行。仍然出现:用户定义类型未定义
到底是怎么回事呀,我试了一下
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long 是可行的,为什么我自己编写的就有错误呢?
初始化代码放在begin ..end之间 特色是:1代码可选 一些必要的工作(如开锁数据段)可由系统完成 2:可设置多个退出过程3:libmain wep对用户透明那它对dll影响吗,如果我不需要用到这些?
library Delphi;
uses
SysUtils,
Classes,
Dialogs;
{$R *.RES}function TestDll(A,B:Integer):Integer;stdcall;
begin
Result:=A+B;
end;exports
TestDll; // 函数名称。beginend.
VB中使用为:
Private Declare Function TestDll Lib "G:\Delphi.dll" (ByVal x As Long, ByVal y As Long) As IntegerPrivate Sub Command1_Click() Text1.Text = CStr(TestDll(3, 4))
End Sub