如何使用Action委托参数方法将win32 app中的c方法的地址传递给c#
我有一个使用C#库的win32应用程序.
C#库具有Action< T>的方法. delegate是一个参数,如下所示: public NetSocket(Action<int,int,string> action) 我在win32应用程序中有一个ref类,其方法与Action委托签名相匹配. 我如何将此方法作为上面列出的NetSocket方法中的Action参数传递? Ben你的解决方案似乎有效,但是在将win32应用程序中的action delegate方法的System:Sting ^输入参数与C#代码中的Action委托的String输入参数进行匹配时存在编译错误. c#代码中的Action委托使用String作为输入参数,win32代码中的Action委托方法尝试使用System :: String ^进行匹配以匹配它,但这不起作用.
是否需要使用一些封送方法来将win32代码中使用的System :: String与C#代码中使用的字符串进行匹配?我传递System :: String错误还是必须要做其他事情?我必须做什么来将System :: String ^ message参数与string参数匹配? 纠正我尝试了你的解决方案,它给出了以下错误:
@Ben:越来越近了.现在当我使用你的解决方案编译代码时,我得到一个内部编译错误,如下所示:
代码在Visual Studio 10中编译,其中使用Framework 3.5而不是4.0 我检查了内部编译发生的行,并在此处发生错误 _size = ::WideCharToMultiByte(CP_THREAD_ACP,WC_NO_BEST_FIT_CHARS,_pinned_ptr,_str->Length,NULL,NULL); if (_size == 0 && _str->Length != 0) { throw gcnew System::ArgumentException(_EXCEPTION_WC2MB); } 我猜错误的发生是因为c代码中??的String :: String ^输入参数可能没有被编组到c#代码中,反之亦然. 我不确定我需要修复代码的c方面或代码的C#方面. 我想可以制作ac dll并让c#库导入库并在c dll中调用一个方法,然后让win32应用程序加载c dll,但是当一个库加载aw dll时似乎很奇怪c dll使用c#库作为参考. 我检查了内部编译发生的行,这里发生了错误 _size = ::WideCharToMultiByte(CP_THREAD_ACP,. 0,反之亦然.
如果它是本机C函数,请使用
Marshal.GetDelegateForFunctionPointer
如果您正在使用C/C++LI,它听起来像(并且您应该重新提出问题),您需要的内容如下: NetSocket(gcnew Action<int,String^>(this,&ServerClass::ActionMethod)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 用于Windows 10的wget.exe
- windows-server-2008 – 强化Windows Server 2008 R2的最佳
- 注册表 – REG文件中的注释
- 如何防止用户使用自己的凭据登录Windows?
- windows-server-2008 – Windows 2008 DFS复制问题
- Gnuwin32 find.exe在执行搜索之前扩展通配符
- 如何在Windows下使用doMC或glmnet的替代并行处理实现?
- windows – 如何使用Delphi获取与文件扩展名相关联的程序名
- windows – 如何在node.js上杀死一个打开的进程?
- windows-server-2008-r2 – KMS – 所有客户端都处于“初始
- 是默认情况下能够处理vista / win7 UAC的delphi
- windows-server-2003 – 如何将Win2003服务器转换
- reactjs – Enzyme Jest window.getSelection()不
- 在Windows Server上安装RequestTracker(RT)?
- .net-4.0 – windows xp上的visual studio 2013
- windows – 如何获取git存储库中每个修订的文件清
- 用instsrv.exe+srvany.exe将应用程序安装为windo
- windows – Active Directory密码已过期.如果我将
- windows – 适用于企业用途的最佳USB指纹读取器
- window备忘录