在VB中调用VC++的Dll文件,运行时出现Dll调用约定错误?
VC++中函数的声明:
int PlayCh(Char * Playstr)
Vb中:
Private declare function PlayCh Lib "Dllname" (Byval Playstr as string)
as Integer
dim Playstr as string
Playstr="fdkkdjkf"
cc=PlayCh(Playstr)
运行时出现Dll调用约定错误?是不是参数类型不对?
在Foxpro,Vc++中调用正常.
问题点数:100、回复次数:12Top
1 楼kiloculf(落河沉星)回复于 2002-03-26 16:03:13 得分 0
具体看DLL的导出是怎么样的。。。。
如果是void function可以。。
不是的就不行。Top
2 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2002-03-26 16:07:24 得分 0
试一下:
Private declare function PlayCh Lib "Dllname" (Byval Playstr as string)
as LongTop
3 楼gcj123(佛的光辉)回复于 2002-03-26 17:01:08 得分 0
试一下
Private declare function PlayCh Lib "Dllname" (Byref Playstr as string)
as LongTop
4 楼tg123(T.G.)回复于 2002-03-26 19:57:22 得分 0
char
数组
不推荐使用
请用
int PlayCh(LPSTR Playstr)
{
strcpy(Playstr,"ggg");
return 1;}
Private declare function PlayCh Lib "Dllname" (ByVal Playstr as string)as Long
dim a as string*256
Playstr="fdkkdjkf"
cc=Tirm(PlayCh(Playstr))
Top
5 楼zyl910(编程的乐趣在于编程控制硬件,与用图形学实现绚丽效果)回复于 2002-03-26 20:05:24 得分 0
VC | VB6 | VB.Net
int | Long |Short
unsigned char | Byte |Byte
unsigned short | Integer |Short
unsigned int | Long |Integer
signed char | Byte |Byte
signed short | Integer |Short
signed int | Long |Integer
_int64 | (无) |Long
long | Long |Integer
Top
6 楼muqiao(聪明的牛)回复于 2002-03-26 20:32:37 得分 50
这是你的dll中导出的函数少了_stdcall,加上去试试Top
7 楼mazhayang(蚂蚱先生)回复于 2002-03-26 21:00:32 得分 0
1、在.cpp文件中函数声明加winapi(大写) 即 int WINAPI PlayCh(Char * Playstr)。
2、在.def文件中加入
EXPORTS
PlayCh @1
3、在.h文件中加入:
#define DLLEXPORT extern "C" _declspec(dllexport)
DLLEXPORT int WINAPI PlayCh(Char * Playstr)。
试试
Top
8 楼zbde00(为了讨老婆喜欢,努力学习中......)回复于 2002-04-03 17:20:36 得分 0
太过分了,声明中居然没有Alias,而且一大堆人都没有看出来.Top
9 楼gxingmin(小高)回复于 2002-04-03 17:35:12 得分 20
加上约定申明:
int _stdcall PlayCh(Char * Playstr)
Top
10 楼hdj0569(猫)回复于 2002-04-03 17:36:34 得分 20
muqiao(聪明的牛)说得对
这样:
int __stdcall PlayCh(Char * Playstr)
to mazhayang(蚂蚱先生)
因为ls9d999999 (小菜) 在VC++中调用正常,所以应该是导出了。
Private declare function PlayCh Lib "Dllname" (Byval Playstr as string) as Integer
~~~~~~~~~~~as Long
Top
11 楼gxingmin(小高)回复于 2002-04-03 17:36:56 得分 0
不用Alias也行!Top
12 楼hdj0569(猫)回复于 2002-04-03 17:37:52 得分 0
最后的as Integer改为as LongTop
13 楼joyplay(想吃老虎的小猪)回复于 2002-04-03 18:00:29 得分 10
mazhayang(蚂蚱先生) 说的也没错 WINAPI 是 __stdcallTop




