[100分求救]DELPHI调用VB写的DLL的过程为什么提示找不到入口!在线

tpmao 2005-06-21 04:43:39
VB的导出函数为:
Public Sub PrintDoc(DocName As String)

End Sub

在DELPHI中调用为:
procedure PrintDoc(DocName:string);stdcall;external 'word.dll';

提示为找不到函数入口,我改STRING 为PCHAR 也不行!
...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
僵哥 2005-07-14
  • 打赏
  • 举报
回复
VBActiveXDLLProgID
通常VB默认的就是你的VB工程的名称+Class的名称,例如工程名称为Project1,Class名称为Class1则该COM接口(VB导出来的函数或过程)所在的ProgID为:
Project1.Class1

VBObject:=CreateObject('Project1.Class1');
VBObject.PrintDoc(PChar(SomeThing));
javacoco 2005-07-14
  • 打赏
  • 举报
回复
同DELPHI中动态建对象一样,比如动态建ADO

unit CreateAdo;

interface

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

type
TFrmCreateAdo = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
// var 注意不VAR
myCn : variant;
myRs : variant;
public
{ Public declarations }
end;

var
FrmCreateAdo: TFrmCreateAdo;

implementation

{$R *.dfm}

procedure TFrmCreateAdo.FormCreate(Sender: TObject);
var mycnstr : string;
begin
mycn:= Createoleobject('adodb.connection');
myRs:= createoleobject('adodb.recordset');
mycnstr:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";data Source=F:\delphi\delphi数据库开发\Class2\学生学籍.mdb';
mycn.open(mycnstr);
myrs.open('select 学号,姓名,语文 from 学生表',mycn);
end;

procedure TFrmCreateAdo.Button1Click(Sender: TObject);
var
ItemStr: string;
I:integer;
begin
myrs.movefirst;
while not myrs.eof do
begin
itemstr:='';
for i:=0 to myrs.fields.count-1 do
begin
itemstr:=itemstr+vartostr(myrs.fields[i].value)+'||---------||' +chr(vk_tab);
end ;
listbox1.items.add(itemstr);
myrs.movenext;
end ;
end;

end.
laihongbo524 2005-06-21
  • 打赏
  • 举报
回复
uses comobj;

var EI: OleVariant;
begin
EI:=CreateOleObject('工程1.Class1'); //VB中的DLL工程名称,类名,使用DLL,要regsvr32 yourname.dll
ca.PrintDoc('c:\test.doc');
CA := Unassigned;
end;
tpmao 2005-06-21
  • 打赏
  • 举报
回复
unsigned(僵哥(当程序语言成为普及的第三语言之后……))
谢谢你的回答,你说的VBActiveXDLLProgID是什么东西是dllname.functionname的字串么》》
僵哥 2005-06-21
  • 打赏
  • 举报
回复
若未做什么特殊编译的话,VB的ActiveX DLL只有COM接口输出,而自己定义的函数不会以API接口输出。通常在这种情况下要使用一种是使用Variants里面的VBObject:=CreateObject(VBActiveXDLLProgID),然后调用VBObject.PrintDoc(Pchar);
或者是使用菜单当中的选项出导入该COM的接口单元来使用。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧