C# DllImport导入非托管DLL帮忙看下哪有问题?

问题描述

我有这个DLL,要用GetActiveTagData这个函数,但我只知道他在VB中的声明:PublicDeclareFunctionGetActiveTagDataLib"Mr3001ADll.dll"(ByValhComAsLong,ByValNetAddrAsByte,ByRefcntAsByte,ByRefValueAsByte)AsInteger请问我这样写对。运行没报错但读不出数据来。[DllImport("Mr3001ADll.dll",EntryPoint="GetActiveTagData",CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]publicstaticexternboolGetActiveTagData(inthCom,refbyteNetAddr,refbytecnt,refbytevalue);求解!谢谢!

解决方案

解决方案二:
publicstaticexternintGetActiveTagData(longhCom,byteNetAddr,refbytecnt,refbytevalue);

解决方案三:
publicstaticexternintGetActiveTagData(inthCom,byteNetAddr,refbytecnt,refbytevalue);
解决方案四:
GetActiveTagData的返回类型AsInteger
解决方案五:
status1=ClassInfo.Reader.GetActiveTagData(hCom,NetAddr,refcnt,refvalue[0]);按1楼的改过来,调用还是取不到值??
解决方案六:
是不是还有初始化函数?必须调用的
解决方案七:
返回值是多少?接口文档有没有对应的值?
解决方案八:
返回值是1,应该是0才对

时间: 2024-12-03 16:42:33

C# DllImport导入非托管DLL帮忙看下哪有问题?的相关文章

C++的dll函数在c#中调用获取不到值,请大家帮忙看下,谢谢!

问题描述 下面的方法是c++写的DLL封装的方法,我要在c#里面引用然后使用:intSTDCALLSDT_ReadBaseMsg(intiPortID,unsignedchar*pucCHMsg,unsignedint*puiCHMsgLen,unsignedchar*pucPHMsg,unsignedint*puiPHMsgLen,intiIfOpen); 我在c#里面是这样写的:///<summary>///读取卡的信息///</summary>///<paramname

关于c#动态调用非托管DLL的内存释放问题

问题描述 本人由于客户的需要,需要在程序的运行过程中,动态加载不同的DLL.这与直接调用非托管DLL不一样.下面这个帖子中的第三个方法很好的说明了如何动态调用非托管DLL.http://blog.csdn.net/pansiom/article/details/568096#comments为了方便使用,我把文中的方法弄成了一个DLDApi类,如下usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Re

非托管dll-C#调用非托管DLL,报“其他内存已损坏”,请问怎么解决呢?

问题描述 C#调用非托管DLL,报"其他内存已损坏",请问怎么解决呢? 定义: [DllImport("BSEncrypt.dll")] public static extern bool MD5String(ref string instr, int inlen, ref string outstr, int outlen); 调用: String ls_MD5Password = new String('', 100); string as_Password =

asp.net C#调用托管DLL和非托管DLL文件的区别

asp教程.net c#调用托管dll和非托管dll文件的区别 托管dll文件,可以在dotnet环境通过 "添加引用" 的方式,直接把托管dll文件添加到项目中.然后通过 using  dll命名空间,来调用相应的dll对象 .     非托管dll文件,在dotnet环境应用时,通过 dllimport 调用.    c# 调用非托管dll文件.dll文件是用c语言编写的. 如下: 1:结构定义   rditag_t     rditag_t结构定义了测点的结构   typedef

调用非托管dll常出现的bug及解决办法

C和C++有很多好的类库的沉淀,在.NET中,完全抛弃它们而重头再来是非常不明智的.也是不现实的,所以,我们经常需要通过Pinvoke来使用以前遗留下来的非托管的dll.就.NET中使用非托管的dll经验而言,经常碰到的问题至少有两个,它们都是通过在运行时抛出异常来体现的. 1.试图加载格式不正确的程序 出现这种异常,通常是.NET应用程序的"目标平台"与非托管dll的平台不一样. 一般,在使用VS开发.NET的应用程序和类库时,默认的目标平台为"Any CPU",

有关c# 调用vc++编写的非托管DLL、socket编程等相关知识的讲的比较详细的书籍

问题描述 有关c# 调用vc++编写的非托管DLL.socket编程等相关知识的讲的比较详细的书籍 学习c# 调用vc++编写的非托管DLL.socket编程等相关知识的讲的比较详细的书籍都有哪些?(最好是基于VS2008的) 解决方案 c#调用非托管C++生成的dllc# 调用 C++ 非托管 DllC#调用非托管dll 解决方案二: 这样一个知识点,最好是 Baidu/Google 查找来解决 书上的内容,没有网络上的丰富

c++/cli-C++ 加载 CTP DLL 报 LNK2001 错误,请大家帮忙看下,这个问题已经困扰几天了

问题描述 C++ 加载 CTP DLL 报 LNK2001 错误,请大家帮忙看下,这个问题已经困扰几天了 有个问题困扰我几天了,群里的大牛帮忙看下. 我加载ctp的dll时,会报下面这个错误. 谁知道原因,或者之前遇到过吗? 解决方案 删除所有的obj,重新编译下,检查下你的lib目录,对应的lib是否齐全.如果程序是自己写的,那么检查下函数的定义和调用是否一致. 解决方案二: 你需要工程中添加ctp的lib库文件.这样link才找得到.

c#调用dll-调用非托管dll中类的方法

问题描述 调用非托管dll中类的方法 如何用c#来调用c++生成的dll文件中的类的方法? 解决方案 重写为C#的类,否则没办法

c#- 托管DLL无法加载非托管Dll,怎么办?

问题描述 托管DLL无法加载非托管Dll,怎么办? 比如报错,"无法加载 DLL"libcurl.dll": 找不到指定的模块" 我已经引用了托管DLL libcurlNET.dll,这个托管DLL需要引用libcurl.dll,两个DLL已经放在了同一个目录下,还是报错,请指点·· 解决方案 C#用不着这个库,你直接用httpwebrequest就可以了. 解决方案二: htttprequest 效率低 解决方案三: 托管调用非托管的DLL编写C++非托管DLL以