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)”
为什么?希望有高手详细讲解。谢谢。(粘贴族别来)
展开
 我来答
匿名用户
2013-07-07
展开全部
在创建DLL时,头文件那里有一堆注释,仔细看一下就明白了。你在DLL里面用了Strin类型的话,就得引用sharemem单元。你可以用PCHAR类型,就没问题了。function Test():Pchar; stdcall;
begin
Result:='我是人';
end;
匿名用户
2013-07-07
展开全部
同上输出要用数组返回定义为Pchardelphi调用时要分配数组地址空间try Getmem(Pchar,数组大小);finally freemem(Pchar);end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-07
展开全部
调用时候的函数声明要和你dll里的定义保持一致
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式