c#调用dll 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

问题描述

调用一个自己写的c++的dll,结果出现问题提示如下:“System.AccessViolationException”类型的未经处理的异常出现在BidingSystem_Client.exe中。其他信息:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。--------------------------------------------c#[DllImport("PEKS.dll",CharSet=CharSet.Ansi,CallingConvention=CallingConvention.Cdecl)]//对明文进行加密staticexternvoidEnc(stringplain);----------------------------------------------c++voidEnc(stringplain){//模拟上传文件加密//加密文件charaes_key[33];Miraclprecision(16,0);ECnpoint_key;miracl*mip=&precision;point_key.iszero();aes_set(point_key,aes_key);//准备好aes的密钥,点密钥为point_key,字符串密钥为aes_keyintlen=plain.length();stringname=plain.substr(0,len-4);//获得去掉后缀的文件名stringcipher="ciphertext\"+name+".aes";//获得密文文件存储路径plain="plaintext\"+plain;aes_enc(plain,cipher,aes_key);//用aes加密ifstreamfile("plaintext\"+name+".key");stringkeyword;while(getline(file,keyword,'')){charword[80];//将string型的keyword转化为char*型的wordstrcpy(word,keyword.c_str());peks_enc(word,"ciphertext\"+name+".kw");//用PEKS加密关键词放在文件夹ciphertext中的.kw文件中}fIBE_enc(point_key,"ciphertext\"+name+".ak");//加密对称密钥aes_keyfile.close();}求各位大神的解答

解决方案

解决方案二:
c++不要用string
解决方案三:
那改成什么?char*么?
解决方案四:
该回复于2012-04-24 08:28:20被版主删除
解决方案五:
该回复于2012-04-24 10:49:02被版主删除
解决方案六:
引用1楼的回复:

c++不要用string

那看你要实现的功能是什么了给你个网站你可以参考下http://hi.baidu.com/meng7782002/blog/item/74c15fee4d2d7fc8b31cb190.html
解决方案七:
引用5楼的回复:

引用1楼的回复:c++不要用string那看你要实现的功能是什么了给你个网站你可以参考下http://hi.baidu.com/meng7782002/blog/item/74c15fee4d2d7fc8b31cb190.html

我进入dll中进行调试,发现在c#传过去的string参数进入dll中以后就变了,并非原本的string这是什么情况?代码还是上面那个

时间: 2024-09-18 11:03:21

c#调用dll 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。的相关文章

c#调c++dll,尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

问题描述 调用时尝试读取或写入受保护的内存.这通常指示其他内存已损坏.不知道是什么情况,网上好多都是c++Long对应c#int,但是我已经转了还是没用,这代码一开始时可以用的,我重装了win7系统后就运行不了了....求大神帮忙c++:extern"C"__declspec(dllexport)BOOL__stdcallTCR_OpenReader(longnPort){if(1==g_iProtocol){g_CardReader.CreateInterface("1.d

winform-C# Winform项目中, 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

问题描述 C# Winform项目中, 尝试读取或写入受保护的内存.这通常指示其他内存已损坏. C/C++ 代码,这个是第三方提供的外部方法(调用"华大HD-900身份证阅读器接口函数"):int HD_Read_BaseInfo(char* pBmpData char *pName char *pSex char *pNation char *pBirth char *pAddress char *pCertNo char *pDepartment char *pEffectData

dll c#-c#调用c++的dll出现尝试读取或写入受保护的内存问题

问题描述 c#调用c++的dll出现尝试读取或写入受保护的内存问题 使用c#调用c++的一个dll.c++的接口函数为: extern "C" __declspec(dllexport)bool __stdcall CreateDetmObject(IDetManager **ppDetManager); 参数IDetManager为一个结构体: struct IDetManager { virtual void __stdcall SetListener(HWND hWnd) = 0

c++-C# 调用C++ dll是出现这样的错误“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

问题描述 C# 调用C++ dll是出现这样的错误"尝试读取或写入受保护的内存.这通常指示其他内存已损坏. 调试时是这样的: SDK上是这样说明的: 我调用这个dll时是这样的: 困扰了很久,希望有大神来看一看,感激不敬 解决方案 C#尝试读取或写入受保护的内存.这通常指示其他内存已损坏.C# 尝试读取或写入受保护的内存 .这通常指示其他内存已损坏.C#尝试读取或写入受保护的内存.这通常指示其他内存已损坏. 解决方案二: 先看是不是你的参数有问题,然后就是数据对不对 解决方案三: 是不是重复调用

求助,C#调用C++dll时提示:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

问题描述 C++dll的头文件接口描述如下:#pragmapack(push,1)typedefstructXCtrlStatus{XCtrlStatus(unsignedlongV=0){*reinterpret_cast<unsignedlong*>(this)=V;}unsignedcharERR:1;unsignedcharAUTO:1;unsignedcharRUN:2;unsignedcharDIR:2;unsignedchar:1;unsignedchar:1;unsignedc

c#调用delphi编写的dll文件报错,尝试读取或写入受保护的内存

问题描述 c#调用delphi编写的dll文件报错,尝试读取或写入受保护的内存 delphi函数原型 Procedure invoke(params :PChar; result : PChar) ; 解决方案 把这个delphi的原型改一下,改为 Function Pchar invoke(params :PChar) ; 再试试 解决方案二: Function invoke(params: PAnsiChar): PAnsiChar ;

C# 调用C++的DLL文件出现问题。尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

问题描述 我用C#开发一个项目,需要饮用C++的DLL,但是调用其中的方法是有几个函数正常,有一些方法总是报错.错误为:"尝试读取或写入受保护的内存.这通常指示其他内存已损坏."哪位大神可以帮我看看.这是DLL中的方法:typedefstructehInformation{std::stringehfilename;std::stringmark;//eh头文件的标示std::stringsendAddr;//eh头文件的发送地址std::vector<std::string&g

c#调用c++dll报错:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

问题描述 c++原型函数boolDetBelt(constchar*chImgFile,doubledStrictDegree=1.0,XSCRECTroiRect=XSCRECT(),constchar*dstFile=NULL);structXSCRECT{intx;inty;intheight;intwidth;XSCRECT(){x=0;y=0;height=0;width=0;}};声明c#代码[StructLayoutAttribute(LayoutKind.Sequential)]

dll结构体-C#调用DLL结构体,第一次成功,第二次的时候就报错。尝试读取或写入受保护的内存。

问题描述 C#调用DLL结构体,第一次成功,第二次的时候就报错.尝试读取或写入受保护的内存. C++代码 typedef struct tagIDCardData{ char Name[32]; //姓名 char Sex[6]; //性别 char Nation[20]; //名族 char Born[18]; //出生日期 char Address[72]; //住址 char IDCardNo[38]; //身份证号 char GrantDept[32]; //发证机关 char User