DLL调用中的参数类型问题

问题描述

动态链接库中的函数: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*参数。内部转换下类型再调用

时间: 2025-01-22 23:16:49

DLL调用中的参数类型问题的相关文章

C#的DLL调用中void**如何处理?

问题描述 大家好,我现在想把如下C++的函数移植到C#下使用,函数原型如下:HANDLERtOpenSharedMemory(DWORDDesiredAccess,BOOLbInheritHandle,LPCTSTRlpName,VOID**location);我查到了是使用DllImport来调用C++中的DLL,但主要对函数的最后一个形参"VOID**location"比较疑惑,到底该怎么处理?之前我在网上找了好久也没有找到答案,只找到了char**.int**等的处理办法,有劳各

c#调用c++ api函数之参数类型问题-急(高人教教我)

问题描述 c#调用c++api函数之参数类型问题c++函数定义如下extern"C"{structcolorstruct{doubledbValueInterval;CStringstr;IColorPtripColor;colorstruct(){str=_T("");dbValueInterval=0.0;ipColor.CreateInstance(CLSID_RgbColor);}};__declspec(dllexport)voidCressmantest

.net-C#调用c++的dll执行带字符串参数的函数时遇到的问题

问题描述 C#调用c++的dll执行带字符串参数的函数时遇到的问题 我在c++项目中实现函数: extern "C" __declspec(dllexport) int FUNC1(const char* xmlSta, char* fileOut) { return 0; } 然后编译成动态库a.dll,并在C#项目中引用, 用静态加载的方式,是可以运行的,代码如下(只写调用的部分): [DllImport("a.dll", EntryPoint = "

com-C++ 如何调用Delphi的dll文件中的COM方法

问题描述 C++ 如何调用Delphi的dll文件中的COM方法 请问 C++ 如何 调用 Delphi 的dll文件中的COM方法 解决方案 只要是COM就遵守COM的规范,Delphi写出来的COM和其他语言写出来的COM用法是一样的

java-webservice通过url传递参数调用接口,参数中含“/”要怎么处理?

问题描述 webservice通过url传递参数调用接口,参数中含"/"要怎么处理? 我现在在做一个调用企业QQ接口来发信息的平台,是通过webservice在url传递参数调用接口.. 但是短信内容中含斜杠时会干扰参数的传递,大神教我怎么解决啊? @GET @Path(""/sendTips/{receivers}/{content}/{windowTitle}/{tipsTitle}/{tipsUrl}"") @Produces ({Medi

连接池-ERROR SqlExceptionHelper:146 - 调用中无效的参数

问题描述 ERROR SqlExceptionHelper:146 - 调用中无效的参数 10:53:26,259 ERROR UserDaoImpl:43 - org.hibernate.exception.GenericJDBCException: Could not open connection 10:53:26,268 INFO StatisticalLoggingSessionEventListener:275 - Session Metrics { 330065 nanosecon

GDI+中image.save方法参数类型问题 VC++6

问题描述 GDI+中image.save方法参数类型问题 VC++6 第一个参数是地址 普通表示为L"C://" 我想用CString 类来替代这个怎么做 解决方案 CString src = _T("你好"); //在Unicode环境下面src是CStringW类型 CStringA temp = src.GetBuffer(0); //通过转化,temp接受了原来字符串的多字节形式 string dst = temp.GetBuffer(0); //现在就可以

.net调用mysql存储过程中输出参数的问题,求救~~

问题描述 环境.net2.0+mysql5.0.37+Connector/Net5.2问题:在ASP.NET中调用mysql存储过程(输出参数名于存储过程输出参数名不同时),提示输出参数不存在:Parameter'@param1'notfoundinthecollection.当ASP.NET中修改输出参数名于存储过程中输出参数名相同的时候,提示一个新的参数未定义:Parameter'@1118079786param1'mustbedefined.而这个参数变量是自动生成的,在存储过程中我并没有

反射中调用方法传入参数类型一样 却报错

问题描述 反射中调用方法传入参数类型一样 却报错 object obj = Activator.CreateInstance(objectType);// 创建实例 反射创建一个实例 MethodInfo methodInfo = obj.GetType().GetMethod("Parse"); //调用里面的Parse 方法 这个方法需要参数 List methodInfo.Invoke(obj, new object[]{items}); //items 是List类型的参数 ,