当前位置: 首页 > 编程语言 > C#

如何在c++中调用c#方法?share

时间:2023-04-10 21:04:38 C#

你如何在C++中调用C#方法?他们在这里和这里谈论要做什么,但我似乎无法在C++中找到我的C#项目。我已经在c++项目中添加了c#项目作为引用,但是每当我尝试使用我需要的方法时,它都找不到命名空间。我通过右键单击c++项目并转到“引用”来添加它,然后添加了c#项目并添加了一个新的引用。这两个项目都在同一个解决方案中。在下面的代码示例中,我给出了完整的c#代码(using除外)和部分c++代码(我试图从中调用c#方法的方法)。我还更改了一些命名空间,使其更通用并且不包含敏感信息。C#代码是这样的。namespaceCompany.Pins.Bank.Decryption{publicclassDecrypt{[DllImport("decryptsn.dll",CallingConvention=CallingConvention.Cdecl)]publicstaticexternIntPtrdecryptsn(byte[]InpData);//__declspec(dllimport)char*decryptsn(char*InpData);publicstaticStringDecryption(stringparam2){byte[]InpData=newbyte[255];InpData=StrToByteArray(param2);返回Marshal.PtrToStringAnsi(decryptsn(InpData));}publicstaticbyte[]StrToByteArray(stringstr){System.Text.UTF8Encodingencoding=newSystem.Text.UTF8Encoding();返回编码.GetBytes(str);}}}C++代码CPReSInterfaceApptheApp;extern"C"DllExportBOOLWINAPIUserInstruction(HWNDhWnd,HINSTANCEhInst,double*lpNumeric,TCHAR*lpAlpha1,TCHAR*lpAlpha2){AFX_MANAGE_STATE(AfxGetStaticModuleState());如果(lpNumeric==NULL||lpAlpha1==NULL||lpAlpha2==NULL)返回FALSE;ReconcileUHParameter(lpNumeric,lpAlpha1,lpAlpha2);intiCommand=(int)lpNumeric[0];lpNumeric[0]=6;lpAlpha2=Company.Pins.Bank.Decryption.Decrypt.Decryption("123456");返回真;您需要在代码中添加#using指令??例如,如果您的C#dll名为Decrypt.dll,请将其添加到C++compiland的顶部:#using"Decrypt.dll"您还需要确保调用托管方法的C++代码编译为使用/clr编译器选项托管。另外,我认为你需要使用::作为命名空间分隔符,而不是..以上是C#学习教程:如何在c++中调用c#方法?如果分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注—lpAlpha2=Company::Pins::Bank::Decryption::Decrypt::Decryption("123456");本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: