当前位置:w88优德官网网文章中心网站开发.Net → Visual Studio中.Net 引用C++的DLL报错解决方案

Visual Studio中.Net 引用C++的DLL报错解决方案

减小字体 增大字体 作者:w88优德官网网  来源:www.cuoxin.com  发布时间:2014-2-15 21:04:18
.Net 开发中如果使用外部DLL,一般引用进来就可以了,最多引用前将DLL注册一下。下面是我所遇到的问题及解决的方法,希望能对大家有用。1.在Visual Studio中引用C++写的DLL时报以下错误未能添加引用,请确保此文件可访问并且是一个有效的程序集或COM组件。手工注册该DLL也报错:模块已加载,但找不到入口点DLLRegisterServer, 请确保XXX为有效的DLL或OCA文件,然后重试。经查询发现C++编译的DLL并不一定能被C#直接使用,需通过C#中的DllImport直接调用这些功能。代码如下所示:在程序开始时使用以下语句注册方法。[DllImport("Enc7481.dll", EntryPoint = "_Enc7481_Set_Encoder", ExactSpelling = false, CallingConvention = CallingConvention.StdCall)]
 private extern static void _Enc7481_Set_Encoder(UInt16 intDirection, Int32 lngValue);
在程序中直接调用就可以了:_Enc7481_Set_Encoder(0, 0);2.找不到对应的方法使用以上的程序后,参考厂商所给的C++程序却报找不到对应的入口点,也就是函数名称不对。C++DLL编译后函数名称会有变化,需使用eXeScope.exe查询具体的函数名称。3.报内存错误:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。造成这种错误的情况很多,一般来说是对函数的使用错误造成的。对于我的程序来说是因为需要首先调用_Enc7481_Init()来初始化。4.类型错误终于将以上错误都解决,程序可以运行了,但发现取到的数据总是不对,再次检查,发现原来是数据类型不对造成的。VC++中主要字符串类型为:LPSTR,LPCSTR, LPCTSTR, string, CString, LPCWSTR, LPWSTR等
但转为C#类型却不完全相同,只有数据类型对应正确才能取得正确的数据。
类型对照:BSTR ---------  StringBuilderLPCTSTR --------- StringBuilderLPCWSTR ---------  IntPtrhandle---------IntPtrhwnd-----------IntPtrchar *----------stringint * -----------ref intint &-----------ref intvoid *----------IntPtrunsigned char *-----ref byte5.结构体参数的传递对于结构体参数需要在C#中建立对应的结构体,并用Marshal类将结构体转换为指针地址传给C++函数,取得数据后再根据指针地址取得对应的结构。HREE structThree = new THREE();
            IntPtr ptrThree = Marshal.AllocHGlobal(Marshal.SizeOf(structThree));
            Marshal.StructureToPtr(structThree, ptrThree, false);
            _Enc7481_Get_ThreeEncoder2(ptrThree);
            structThree = (THREE)Marshal.PtrToStructure(ptrThree, typeof(THREE));

本文引用网址:
在下列搜索引擎中搜索“Visual Studio中.Net 引用C++的DLL报错解决方案”的相关信息:
谷歌搜索 百度搜索 360搜索 雅虎搜索 搜狗搜索 搜搜搜索 必应搜索 有道搜索
你可能还喜欢以下文章
  • 1如何做爱真人示范图片 男女ML常...
  • 2情侣酒店开房qvod 情侣做爱视频...
  • 3怎么做爱舒服?真人示范做爱姿...
  • 4如何做爱更舒服?教你做爱72式...
  • 5雨后小故事 qq表情姐弟雨后小故...
  • 1dede:arclist 实现分页!-织梦...
  • 2免费软文发布平台汇总
  • 3dedecms实现频道封面和列表页调...
  • 4织梦DEDECMS {dede:field name...
  • 5首页flash幻灯片不显示解决方法...
  • 1嫩白少妇与猛男户外疯狂车震遭...
  • 2怎样爱爱最爽?性爱姿势真人图...
  • 3中国女大学生的淫靡生活
  • 4舒淇艳照门事件 舒淇不雅照ed2...
  • 5合肥艳照门事件 合肥艳照门全套...
  • 1如何做服务器安全维护?有哪些...
  • 2Windows Server 2003系统性能优...
  • 3IIS中的 MIME类型
  • 4设置不求人:搞懂任务栏显示项目...
  • 5远程管理Win2003服务器技巧
  • 赞助商广告

    图片文章导读