现在我做了一个很简单的dll,可以在delphi中调用(用的是静态链接),但在vb中却出现错误,说“用户定义类型未定义”。是不是delphi编好的dll在编写过程中还要加一些什么,才可以在vb中使用?(比如dll中的初始化代码和退出码,我不知道是什么意思,用来干什么)。还有,我已经把这个dll文件和调用它vb程序放在一个目录下了,vb应该不会找不到这个dll文件吧?
解决方案 »
- 有没有类似visio画图的VCL控件
- DELPHI注册问题
- 如何获取网页指定的信息?
- 有什么方法可以往DLL的调用函数中传递类参数???
- 谁能帮我解决这个问题啊!(分数不够可以再加)
- 怎样才能把空格之后的第一个字母都大写??在线等待。。。。。。。。。
- ADO查询:etc:ClientName<>'张三',用什么方法呢?
- 如果我想删除一个字符串的某一个字符怎么做????
- 两个问题,望赐教(100分)
- 谁有例子:关于跟踪windows内任一程序对注册表的操作。
- 请教怎样在线更新本地数据?
- 一个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