Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2341215
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:08:00

我用bcb编写了一个字符串相加函数的dll,就是输入两个字符串,返回两个字符串相加后的字符串。
extern  "C"      _declspec(dllexport) char* _stdcall  AddString(char*,char*);
_declspec(dllexport)  char* _stdcall  AddString(char* chrA,char* chrB)
{
     AnsiString strA,strB,strC;
     char* chrC ;
     strA=AnsiString(chrA);
     strB=AnsiString(chrB);
     strC=strA+strB;
     chrC=strC.c_str()  ;
      return chrC;
}

按照网上多遍文档的介绍,我已经完成了该DLL的编写,并能用bcb编写的exe来调用,bcb调用一切正常。但是,当我用vb来调用时,出现这样的怪问题,如果输入参数字符串长度比较小时,返回字符串正常;如果输入参数字符串长度比较大(例如各为20个字符组成的),返回就会出错或返回空白字符。
Public Declare Function AddString Lib "mytoolbox.dll" (ByVal i As String, ByVal j As String) As String
Dim l As String
l = AddString("abcd", "ghijk")
Debug.Print l

我在网上翻遍了资料,包括msdn,但是,网上的文档只是说用visual c++编写的dll,用vb来调用的方法。没有任何的bcb写的dll,vb来调用,并且传递字符串的说明。
非常郁闷,请各位大侠帮忙解决。如方便,请贴出示范代码。非常感谢。


--------------------next---------------------

阅读(1413) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~