delphi编写dll的一个问题
我写了这样一个dll:functionTest(a,b:integer):integer;beginResult:=a+b;end;exportsTest1;再调用时,我...
我写了这样一个dll:
function Test(a,b:integer):integer;
begin
Result:=a+b;
end;
exports Test1;
再调用时,我是这么声明的:
function Test1(a,b:integer):integer;external 'Project1.dll'; //声明
运行时没有出错。
可是我在写dll时,返回是 string的时候,代码如下:
function Test():string; stdcall;
begin
Result:='我是人';
end;
再调用此dll时,会出现“应用程序无法正常启动(0xc000007b)”
为什么?希望有高手详细讲解。谢谢。(粘贴族别来) 展开
function Test(a,b:integer):integer;
begin
Result:=a+b;
end;
exports Test1;
再调用时,我是这么声明的:
function Test1(a,b:integer):integer;external 'Project1.dll'; //声明
运行时没有出错。
可是我在写dll时,返回是 string的时候,代码如下:
function Test():string; stdcall;
begin
Result:='我是人';
end;
再调用此dll时,会出现“应用程序无法正常启动(0xc000007b)”
为什么?希望有高手详细讲解。谢谢。(粘贴族别来) 展开
2013-07-07
展开全部
在创建DLL时,头文件那里有一堆注释,仔细看一下就明白了。你在DLL里面用了Strin类型的话,就得引用sharemem单元。你可以用PCHAR类型,就没问题了。function Test():Pchar; stdcall;
begin
Result:='我是人';
end;
begin
Result:='我是人';
end;
2013-07-07
展开全部
同上输出要用数组返回定义为Pchardelphi调用时要分配数组地址空间try Getmem(Pchar,数组大小);finally freemem(Pchar);end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-07
展开全部
调用时候的函数声明要和你dll里的定义保持一致
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询