VB和VC的函数参数传递问题

来源:百度知道 编辑:UC知道 时间:2024/04/20 06:16:24
如何在VB中调用VC编写的DLL函数???
我测试的时候其他数据都能正确传递,就是字符传不能
传递时老是有错误
查看MSDN说要使用BSTR和LPSTR类型
我都试了,运行时程序会崩溃,参数根本传不过去
我应该怎么做才能正确传递字符串参数???
高手解答下,谢谢~~~

VC中的DLL导出函数:
long AdditionNum(LPSTR sNum) //Function AdditionNum(Byval Num)
{
return 123;
}
long TestFunction()
{
return 1234;
}

VB中的声明:
Public Declare Function AdditionNum Lib "EX_DLL.DLL" (ByVal sNum As String) As Long
Public Declare Function TestFunction Lib "EX_DLL.DLL" () As Long

VB调用:
Private Sub Cmd1_Click()
Dim x As Long

x = AdditionNum("555")
MsgBox CStr(x), 64, "Call AdditionNum"
End Sub

Private Sub Cmd2_Click()
Dim x As Long
x = TestFunction
MsgBox CStr(x), 64, "Call TestFunction"
End Sub

测试的时候TestFunction函数已经正确返回1234.
但是传递字符的哪个函数会使程序崩溃,有知道的高手告诉我下哈,不胜感激...
最好举个例子.我还是有点不太

你的C函数名前面需要写PASCAL修饰词。
例如int PASCAL f(.....)
======
我一般用VC中编程时为:
long PASCAL AdditionNum(LPSTR sNum)
{ return 123; }
就是这样写的啊。另外VB中的ByVal 去掉试试,让它传ref。