weilai2570019 发表于 2008-5-26 19:44

vb6 调用vc++的dll

我在vc++中生成一个photosplit的动态链接库在vb中调用这个动态链接库出现dll 调用约定错误现在不知道为什么了
希望大家能给以帮助
这个是输出VC++时的入口函数 mySplit
extern "C" __declspec(dllexport) void mySplit(  char* srcFileName , char* destFileName ,char* str);
在vb6中调用这个dll时
Private Declare Sub split1 Lib "D:\PhotoSplit.dll" Alias "mySplit" (ByVal srcfilename As string, ByVal destfilename As string, ByVal strName As string)
在vb6中调用时 Call split1(srcfilename, destfilename ,strName )

slore 发表于 2008-5-27 11:40

C中是指针……

因为没有 字符串 类型……

传递的是第一个字符的地址

lisypro 发表于 2008-5-27 13:21

mySplit
extern "C" __declspec(dllexport) void mySplit(  char* srcFileName , char* destFileName ,char* str);
这一句错了,这样的DLL只能被C++调用

flyue 发表于 2008-5-27 13:44

我觉得你应该在VC的DLL工程里建立一个*.def文件,里面保存:
EXPORTS
   mySplit
再编译此DLL

flyue 发表于 2008-5-27 13:46

或者在VB里改成
Private Declare Sub split1 Lib "D:\PhotoSplit.dll" Alias "mySplit" (srcfilename As string, destfilename As string, strName As string)
把Byval去掉
[img]http://image5.poco.cn/mypoco/myphoto/20080527/13/44397527200805271336553222380259616_000_640.jpg[/img]

页: [1]

编程论坛