我在Vc++中是这样写的:
void __stdcall DllFun(char* name,char* ver){
char name[]="abc"; char ver1[]="V1.0"; name=name; ver=ver1;}在VB中此函数声明后,进行调用,是这样写的:
sub a()
dim name as string
dim ver as string call dllfun(name,ver)
label1.caption=name & ver 'end sub
调用发生错误,提示“bad dll calling convention.”:
请问,各位问题出在哪里了?请指正!!!!!!
多谢,多谢!
void __stdcall DllFun(char* name,char* ver){
char name[]="abc"; char ver1[]="V1.0"; name=name; ver=ver1;}在VB中此函数声明后,进行调用,是这样写的:
sub a()
dim name as string
dim ver as string call dllfun(name,ver)
label1.caption=name & ver 'end sub
调用发生错误,提示“bad dll calling convention.”:
请问,各位问题出在哪里了?请指正!!!!!!
多谢,多谢!
{
char name[]="abc"; char ver1[]="V1.0"; refname=name; refver=ver1;}
AFX_MANAGE_STATE(AfxGetStaticModuleState());
char name[]="abc"; char ver1[]="V1.0"; name=name; ver=ver1;}
试试看。
void __stdcall DLLVer(char* dllname,char* ver)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
char name[]="abc";
char dllver[]="V1.0"; dllname=name;
ver=dllver;
}
在vb中调用此函数,目的为把dllname与ver的字符串显示在vb的窗口中,
vb中是这样写的:
Public Declare Sub DLLVer Lib "Test.dll" (ByRef dllname As String, ByRef ver As String)Private Sub btnInfo_Click()
Dim dllname As String
Dim ver As String DLLVer dllname, ver
lable.Caption = dllname & ver
End Sub
问题却出现了,1)在vc中调试,没有报错,只是在vb 编写的窗口中得到的dllname与ver的字符串为空,无法的到他们的值;2)而在vb中调试调用dll文件中的此函数,却报错,错误信息是这样的:“Bad Dll calling convention!”这是怎麽回事?
第二个大问题:出现第一个问题后,我在vc中换了另一种写法:
void __stdcall DLLVer(char* dllname,char* ver)
{
int i=0;
int len=0; AFX_MANAGE_STATE(AfxGetStaticModuleState()); char name[]="abc";
char dllver[]="V1.0"; len=strlen(name);
for (i=0;i<len;i++)
{
dllname[i]=name[i];
}
len=strlen(dllver);
for(i=0;i<len;i++)
{
ver[i]=dllver[i];
}}
在vc中调试,却出现了另一个错误信息:‘unhandled exception in Test.exe:0xC0000005:Access violocation!’
出现这样的问题是不是没有给指针变量分配内存空间,如果是,该如何写分配内存空间的代码?
我遇到以上两大问题,真的是很郁闷,请楼主指点一二!!!!!!!多谢,多谢!
字符串作为参数,用BSTR类型
2、AFX_MANAGE_STATE(AfxGetStaticModuleState());一定放在函数的最前头;
3、你的DLL一定要是向导生成的规则DLL。
这个可以给搂住你参考下.