问题描述
动态链接库中的函数:typedefint(pAftsApiExt)(inta,char*b,CStringc,char*d,char*f,char*m);在C#中如何声明?[DllImport("A.dll",EntryPoint="_AftsApiExt",CharSet=CharSet.Ansi)]publicstaticexternint_AftsApiExt(inta,stringb,Stringc,stringd,stringf,stringm);对吗?主要是CStringc这个参数不知怎么办!!!
解决方案
解决方案二:
尽情的BS提供给你DLL的人CString这个东西C#用不了的。
解决方案三:
不光C#用不了,不是一个版本的MFC程序也用不了
解决方案四:
再用c++封装一次吧
解决方案五:
引用1楼akirya的回复:
尽情的BS提供给你DLL的人CString这个东西C#用不了的。
解决方案六:
CSTRING....强悍的DLL写法
解决方案七:
改成char*吧
解决方案八:
vb可以调用吗?可以的话,怎么定义?
解决方案九:
谁给你的DLL竟然C#里冒出了指针难道这就是传说中的编程大师
解决方案十:
引用7楼ppvmm的回复:
vb可以调用吗?可以的话,怎么定义?
同样调用不了。只能在某个VC版下可以调用
解决方案十一:
动态链接库中的函数:typedefint(pAftsApiExt)(inta,char*b,CStringc,char*d,char*f,char*m);在C#中如何声明?[DllImport("A.dll",EntryPoint="_AftsApiExt",CharSet=CharSet.Ansi)]publicstaticexternint_AftsApiExt(inta,stringb,Stringc,stringd,stringf,stringm);我现在确定的是,这么调是可以执行的,有返回值。先不管值的正确与否,执行没问题。是不是证明可以这么调用呢?
解决方案十二:
很强大,请问CString是怎么入栈的?
解决方案十三:
各位高手,所谓的调用不了是不是说调用了出错呢?可是现在调用没出错
解决方案十四:
改就一个字
解决方案十五:
typedefint(pAftsApiExt)(inta,char*b,CStringc,char*d,char*f,char*m);HINSTANCEhDLL;pAftsApiExt*AftsApiExt;hDLL=LoadLibrary("libaftsclient.dll");//加载动态链接库if(hDLL==NULL){MessageBox("未找到动态库libaftsclient.dll","消息",MB_ICONINFORMATION|MB_OK);return;}AftsApiExt=(pAftsApiExt*)GetProcAddress(hDLL,"_AftsApiExt");if(AftsApiExt==NULL)return;rc=AftsApiExt(1,psapplcode,CstrSendfile,psdestnode,psipcluster,psthisnode);请各位帮忙把上面那段代码转换到一个函数b(inti,char*psapplcode,char*CstrSendfile,char*psdestnode,char*psipcluster,char*psthisnode)吧,这样就可以调用了。就是把CString类型参数编程char*参数。内部转换下类型再调用