请教c# 调 用c/c++ DLL 问题

问题描述

[DllImport("DecryptApi.dll",CharSet=CharSet.Unicode)]publicstaticexternvoidEncryptCOM(stringdata1,byte[]InputData,intInputLen,[MarshalAs(UnmanagedType.LPArray,SizeParamIndex=1)]byte[]OutputData);

outputdata是返回字节,请教程c/c++如何写法,不知道写样写对吗如何返回outputdataextern"C"__declspec(dllexport)voidEncryptCOM(char*data1,unsignedcharinputdata,intinputlen,unsignedchar*outputdata);

voidEncryptCOM(char*data1,unsignedcharinputdata,intinputlen,unsignedchar*outputdata){//std::stringencoded=base64_encode(encrypt,s[0]);//unsignedchar*encrypt加密后的字节中可能有'';stringkey=string(data1);stringresult=xxtea_encrypt(changeCharToString(inputdata),key);//接口1unsignedchardate_uchar[1024];strcpy((char*)date_uchar,(constchar*)result.c_str());outputdata=date_uchar;}

解决方案

解决方案二:
原char类型,c#中你还应该用char类型原指针char*类型,如果长度不变,c#中用string类型,长度变化的,用StringBuilder类型
解决方案三:
我的意思想问C#这样子写。c++如何写。C++代码应该有问题的

时间: 2025-01-25 13:17:56

请教c# 调 用c/c++ DLL 问题的相关文章

请教:一个关于C#的dll的问题

问题描述 用C#建了一个dll,名为mydll.dll.然后再这个dll里写了一个函数publicintadd(inta,intb){returna+b;}我在一个窗体中调用上面dll里的函数privateIntPtrhModule=IntPtr.Zero;privateIntPtrfarProc=IntPtr.Zero;hModule=LoadLibrary("mydll.dll");farProc=GetProcAddress(hModule,"add");//

请教一个关于C#接口dephi dll文件的问题。

问题描述 有一个无法更改的第三方控件,是dephi写的.我用c#访问他,读取一些数据.dephi函数原型:functionJX102R_Read_Card(varReaderNo:integer;CardNO,clientIP:pchar):integer;三个参数都是返回过来的,不需要传值进去.第一个参数c#定义为int能获取到,但是第二个,第三个,用了很多种类型都会报错.接口文档写的是返回的字符串指针.使用非托管方式引用的dll...请问各位大侠,c#里面该用什么类型去获取第二,三个参数的值

c#怎样才能调Delphi做的DLL

问题描述 例如:在Delphi中的导出函数为:functionLoad_SWDJ(h:Thandle):integer;stdcall;beginapplication.Handle:=h;frmDeath:=TfrmDeath.Create(nil);tryfrmDeath.ShowModal;finallyfrmDeath.Free;end;end; 解决方案 解决方案二:import["Delphi.dll"解决方案三:[DllImport("**.dll")

C#调C++写的DLL函数,出现“堆栈不对称“错误

问题描述 错误信息:其他信息:对PInvoke函数"hk9600sdkTest!hk9600sdkTest.IVMS9600SDK::HikPt_StartPlayView"的调用导致堆栈不对称.原因可能是托管的PInvoke签名与非托管的目标签名不匹配.请检查PInvoke签名的调用约定和参数与非托管的目标签名是否匹配c++:typedefvoid(__stdcall*pStreamCallback)(longlSession,intiStreamType,constchar*dat

C#的调一个C++的DLL, 也好像是一个C++ COM

问题描述 大家好,我是做C#的,项目用到一个C++的DLL,但是一直调用不到这个DLL的方法,后来听说这个DLL要加上_declspec,但有没有DLL的源码和lib,那我要怎么给它加?好像是要新建一个DLL,再调用原来的DLL,是吗,?怎么实现.更多0 解决方案 解决方案二:dllimport看看好不好用解决方案三:DLLImport加载这个dll然后重新生命他里面的方法,但是不实现然后调用解决方案四:引用楼主illos的回复: 大家好,我是做C#的,项目用到一个C++的DLL,但是一直调用不

请教C++调用DLL改用C#调用DLL方法和类型映射

问题描述 现在有一个C++的dll,原来是C++项目使用,现在有一个C#项目想使用这个DLL,调用这个dll的时候一些类型映射,不知道C++中的类型,应该映射成C#中的什么类型,该怎么写,请教大神.C++调用DLL的代码如下主要不知道下面这三种C++中的参数,用C#改写该映射成什么类型constTCHAR*sLogDirconststd::list<conststd::pair<LPCSTR,LPCSTR>>&listParamsParamPair*pPairs reape

java如何开发dll,ocx,activeX组件

问题描述 java能开发出象ocx,dll这样的组件,然后在客户端通过regsvr32命令注册该组件,在网页的javascript里调用该组件不?先声明,不会用VC/VB,只会用java语言 解决方案 解决方案二:如果可以的话,那么上网将变得极度不安全.解决方案三:java还不能开发ocx控件,至少市场上还没见到java可以开发applet去实现ocx的功能解决方案四:Java暂时还不行吧,可能以后会支持,可以试试楼上的方法!解决方案五:暂时还不能实现ocx解决方案六:applet不是在服务器端

合并DEVEXPRESS dll问题

问题描述 我用ILmerge合并我用的devexpress的dll,然后重新引用,再编译,可以通过,就是原来的控件在vs里面显示不出来,但是我放到别人电脑上就是打不开程序,我放没合并的dll就没问题,想请教各位大侠,这个合并dll不是这样用的吗?有啥方法,或者demo,我合并的是14.2的devexpress,我也用reactor合并过还是一样不行,想请教各位老师.怎么才能合并了又可以运行,是不是少合并什么 解决方案 解决方案二:dll最好不要合并,避免不必要的麻烦

请问这个C++的dll在C#中怎么调呀?急……在线等!

问题描述 请问这个C++的dll在C#中怎么调呀?急--在线等! C++中的调用: extern "C" _declspec(dllimport) int ReadGzjzzData(char* pData,char* photo,int * iErrCode); void CReadGzjzzDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 // OnOK(); char Data[64*1024] = {0};//各字段用双竖"