C#调用C语言的dll问题 [问题点数:40分,结帖人superyanghua]

Bbs1
本版专家分:0
结帖率 100%
Bbs2
本版专家分:107
Bbs1
本版专家分:0
Bbs8
本版专家分:47278
Blank
铜牌 2010年6月 总版技术专家分月排行榜第三
Blank
黄花 2010年6月 .NET技术大版内专家分月排行榜第二
Blank
蓝花 2010年7月 .NET技术大版内专家分月排行榜第三
2010年5月 .NET技术大版内专家分月排行榜第三
Bbs1
本版专家分:5
Bbs1
本版专家分:0
Bbs6
本版专家分:7246
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs6
本版专家分:5737
Bbs4
本版专家分:1622
Bbs1
本版专家分:0
Bbs7
本版专家分:16252
Blank
红花 2007年7月 软件工程/管理大版内专家分月排行榜第一
Bbs2
本版专家分:394
Bbs1
本版专家分:0
Bbs1
本版专家分:0
C语言Dll编写与调用
C<em>语言</em>Dll编写与<em>调用</em>,内含源代码与操作步骤
python调用 C语言DLL问题
VS2010 想写个简单的C函数 生成<em>dll</em> 让python<em>调用</em>rnrnVS2010 代码rn#include rnrn_declspec(<em>dll</em>export) int add(int a, int b)rnrn return a+b;rnrnrnpython 代码rnfrom ctypes import *rn<em>dll</em>=CDLL("add.<em>dll</em>")rnprint <em>dll</em>.add(2,3)rnrn提示说 AttributeError: function 'add' not foundrnrn问下是<em>dll</em>写的有<em>问题</em> 不符合python 还是python代码<em>问题</em>rn<em>调用</em>的<em>dll</em>路径如何设置
关于c语言调用dll问题,急!!!!
我需要在c程序中<em>调用</em>一个vc程序中的函数rn#include"CaptrueYUV.h"rn#pragma comment(lib, "CaptrueYUV.lib")//dll中导出函数为vc函数rnvoid main(int argc, char *argv[])rnrn int i3333;////////////////////////////////rn int Capture1();///////////////////////////////<em>dll</em>中的函数声明rn i3333 = Capture1();<em>dll</em>中的函数声明rnrn错误:rnmain.obj : error LNK2001: unresolved external symbol _Capture1rnDebug/tmn21.exe : fatal error LNK1120: 1 unresolved externalsrnError executing link.exe.rnrn请指教是否这样<em>调用</em>?rn错误原因?rnrnrnvc中的这个函数为:rnint Capture1()rnrnrn return 2;rn rnrn急啊,请帮帮我!
关于Delphi调用C语言的Dll的问题
现在手里边有一个Dll是C<em>语言</em>的,它提供的<em>调用</em>方法是:rnextern ZDIGEST_API void ZSignature(unsigned char *data, long len, unsigned char *digest);rnextern ZDIGEST_API bool ZSignatureVerify(unsigned char *data, long len, unsigned char *digest);rnextern ZDIGEST_API bool ZSignatureFile(char *fpath, unsigned char *digest);rnrn这是三个函数,请教高手我在Delphi中如何使用?
C语言的初级DLL调用问题
有<em>dll</em>add(int x,int y)位于<em>dll</em>内,函数fun(void)内有指向<em>dll</em>add指针。现我以fun(2,3)方式<em>调用</em>fun,fun再以无参数形式<em>调用</em><em>dll</em>add,能得到5吗?我试好像不行…不是说C<em>语言</em>函数<em>调用</em>是把参数入栈,再在被<em>调用</em>函数pop的吗?
c# 调用 c语言的DLL 参数是char * 的问题
最近我要调一个C<em>语言</em>的DLL <em>调用</em>时总是报错“外部组件发生异常” SEHException类型的错误rnrnC<em>语言</em>的.h文件里这样定义的rnrnextern "C" _declspec(<em>dll</em>export) int VerifyLicense(rn const char* publicKey,rn const char* dat,rn const char* lic);rnrn我C#里是这么写的rn[DllImport("licverif.<em>dll</em>", EntryPoint = "VerifyLicense", CharSet = CharSet.Ansi)]rnpublic static extern int VerifyLicense(string publicKey, string dat, string lic);rnrn<em>dll</em>名字我肯定没写错,否则会报“找不到指定模块”的异常rnrn我上网搜了一遍,char*这个参数对于C#来说比较麻烦,我还试过StringBuilder,char[],IntPtr,byte[]都不行,悲剧rnrn求大家帮助
c#调用其他语言DLL的问题
在DELPHI中是这么申明的:rnfunction readcardnum(buff: pchar; sqh: integer; modem: boolean): integer; stdcall; external 'comm.<em>dll</em>' ;rn其中buff是具有返回值的,rn我在<em>c#</em>中用private static extern int readcardnum(ref String buff,int sqh,bool modem)定义后,在<em>调用</em>是出现“未将对象引用到实例”的错误,怎么办,哪位老大救救我?
在C#程序中调用C语言dll问题
在vc.net下编写了一个简单的<em>dll</em>如下:rn#include rn#include rn __declspec ( <em>dll</em>export ) long __stdcall f(long i) rn return i;rnrn生成相应的lib和<em>dll</em>文件。rn在<em>c#</em>.net下编写了一个简单的<em>调用</em>上述<em>dll</em>的程序如下:rnusing System;rnusing System.Runtime.InteropServices;rnpublic unsafe class demo rnrn [DllImport("DeviceControl.<em>dll</em>", CharSet=CharSet.Auto)]rn public static extern long f(long i);rnrnnamespace ConsoleApplication1rnrn unsafe class Class1rn rn [STAThread]rn static void Main(string[] args)rn rn demo.f(3);rn rn rnrn运行时显示错误如下:rn未处理的“System.DllNotFoundException”类型的异常出现在 ConsoleApplication1.exe 中rn其他信息:无法加载 DLL (DeviceControl.<em>dll</em>)。rnrn把上述[DllImport("DeviceControl.<em>dll</em>", CharSet=CharSet.Auto)]rn改为[DllImport("DeviceControl.lib", CharSet=CharSet.Auto)],错误仍然存在。rn请问:我的这种<em>调用</em>方法错在哪里?
还是c#调用c语言dll问题 ,请教
apiStatus __declspec(<em>dll</em>export) __stdcall DrfGetParameter (HANDLE hCom, unsigned int iAddr, UBYTE *value);这个是<em>dll</em>中函数的原型,在<em>c#</em>中怎么<em>调用</em>,参数怎样设置???
关于C#调用C语言写的DLL传递参数的问题
下面有C# 和C<em>语言</em>写的部分代码rnrn当<em>调用</em>C<em>语言</em>写的这个方法时(方法为编译好的DLL的方法) 传递进去的是一个2个对象的数组[2] 但是执行到C<em>语言</em>的那部分 就无法执行了 rnrnpBanks[1].nbytes<=0, USC_NotInitialized);// 在这里ruturn USC_NotInitialized;了rnrn //......rnrn[/code]
C# 调用C/C++ DLL
[code=c]typedef struct IdcInfo rn char name[30+1]; //rn char sex[1+1]; //'1'男 '2'女 rn char nation[2+1]; //民族 '01'-'57'rn char birth[8+1]; //YYYYMMDDrn char addr[70+1];rn char pid[18+1];rn char issue[30+1]; //发卡机关rn char valid_start[8+1]; //rn char valid_end[8+1]; //rn TIdcInfo;rnrn//读身份证,读取成功后,会在当前目录生成xp.bmp照片文件 // icc<em>dll</em>.<em>dll</em>rnSTDAPI ReadIdcInfo(int ReaderHandle, TIdcInfo *pIdcInfo);rnrn[/code]rnrnrn求C#中该如何<em>调用</em>,谢谢!
C#调用C编写dll
[DllImport("P230_DLL_VC.DLL")]rnpublic static unsafe extern int RpcClose();rnrn<em>调用</em> int a=RpcClose();rn出错:无法在 DLL P230_DLL_VC.DLL 中找到名为 RpcClose 的入口点。rn请教一下如何解决。rn谢谢!
c# 调用c动态dll
[b][color=#FF0000]请问下面<em>调用</em>正确吗?rn为什么我的程序<em>调用</em>后还是出现SSL初始化错误rnSSLLib.<em>dll</em>rn放在了bin下[/color][/b]rnrn[code=C#]rnint OPENSSL_init(intmode)rnrnrn[/code]rnrnrnrnrn[code=C#][DllImport("SSLLib.<em>dll</em>",CallingConvention=CallingConvention.Cdecl,EntryPoint="OPENSSL_init")]]rnpublic static extern int OPENSSL_init(int mode);rnrnrnrn函数<em>调用</em>rnpublic void test()rnrn //为什么这里初始化会出错?rn int i= OPENSSL_init(0);rnrnrn[/code]rnrnrnrn[color=#FF0000]1楼 bdmh回复:是什么<em>调用</em>约定啊,stdcall还是cdecl,c默认是cdeclrnrnrnrn 答: 是 Cdecl.. 急死我了。 应该本地可以<em>调用</em>阿 为什么会这样 。 1点多就要测试了。rnrnrn2楼 evilant回复:SSL初始化错误,是不是找不到SSLib.<em>dll</em>?rnrnrn 答:rn SSLLib.<em>dll</em>放在程序bin->DeBug下了!rnrn3楼 guliang21 回复 :放到system32下试试rnrn 答:放了 。还是一样rnrn4楼 lizhibin11 大侠:回复:CallingConvention=CallingConvention.Cdecl把这个去掉rn 答: 去掉还是一样rnrn5楼 isjoe回复:是web项目吗?rn 答: winfrom[/color]rnrnrnrn
【C#】调用C语言生成的dll
C#<em>调用</em>C<em>语言</em>生成的<em>dll</em> using System; using System.Runtime.InteropServices; //与导入<em>dll</em>有关的命名空间 using System.Windows.Forms; class Example { //[导入<em>dll</em>,<em>dll</em>与exe在同一个文件夹下]导入<em>dll</em>中getCpuID1函数 [DllImport("CPUID32DLL.<em>dll</em>...
求救: c#调用 c的dll
<em>c#</em><em>调用</em> c的<em>dll</em>rn有两个传出参数 char* password,char* corp_idrnrn<em>dll</em>内部定义rnunsigned long user_num;rn.....rnsprintf(corp_id,"%06ld",user_num);rnrnunsigned char cur_word,chk_word,pwd_word[17] = ""rn.....rnsprintf(password,"%s",pwd_word);rnrnrn我在<em>c#</em>中用StringBuilder,password得不到值,corp_id得出的值是正确的,是什么原因啊???rn
C#调用C代码DLL
首先我们新建一个C<em>语言</em>的WIN32项目 选择项目类型为DLL库 在新建的项目中我们添加Ccode.h,Ccode.cpp两个文件 Code.h extern &quot;C&quot; __declspec(<em>dll</em>export) int Minus(int a, int b); extern &quot;C&quot; __declspec(<em>dll</em>export) int Add(int a, int b); Cc...
c#初学,调用c的dll
c的头文件rnextern "C" void _export _stdcall get_one_yc(int fac, int yc_dot, float *yc_value);rnrn<em>c#</em><em>调用</em>我这样写rn public class DllTestrn rn [DllImport("BaseDll.<em>dll</em>")]rn private extern static void get_one_yc(int fac, int yc_dot, float *yc_value);rn rnrn提示“指针和和固定大小缓冲区只能在不安全的上下文中使用”,我这样写对吗,要怎么改,之后要如何用这个函数,帮忙写写吧,多谢了
C#调用C DLL异常
最近在开发过程中需要使用C#<em>调用</em>C写的DLL,但在<em>调用</em>过程中遇到这个<em>问题</em>:“尝试读取或写入受保护的内存 这通常指示其它内存已损坏”,出现错误的地方可能为C#定义的结构体与C定义的结构体转换错误。详细如下:rn1.引用外部C的DLL:rn[code=csharp][DllImport(@"C:\Users\Administrator\Documents\visual studio 2010\Projects\CSQLDLL\Debug\CSQLDLL.<em>dll</em>", EntryPoint = "CDBWriteFunc")]rn public static extern int CDBWriteFunc(ref DB_INFO_CTL_TBL dbinfo, [In, Out] USR_INFO_TBL []usrinfo,int count);[/code]rn2.C#中结构体定义:rn[code=csharp][StructLayout(LayoutKind.Sequential)]rn public struct DB_INFO_CTL_TBLrn rn [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]rn public string byDBName; // DB Namern [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]rn public string byUsrName; // DB User Namern [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]rn public string byIPAddr; // IPrn [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]rn public string byDBPwd; // Passwordrn ;rn [StructLayout(LayoutKind.Sequential)]rn public struct USR_INFO_TBLrn rn [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]rn public string byName;rn [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]rn public string byAge; rn ;[/code]rn3.C中的函数声明:rn[code=c]__declspec(<em>dll</em>export) INT __stdcall CDBWriteFunc( DB_INFO_CTL_TBL *dbinfo, USR_INFO_TBL *usrinfotbl,INT count );[/code]rn4.C中的结构体定义:rn[code=c]typedef structrnrn BYTE byDBName[20]; // DB Namern BYTE byUsrName[20]; // DB User Namern BYTE byIPAddr[20]; // IPrn BYTE byDBPwd[20]; // PasswordrnDB_INFO_CTL_TBL;rnrntypedef structrnrn BYTE byName[20]; rn BYTE byAge[20];rnUSR_INFO_TBL;[/code]rnrn抛出“尝试读取或写入受保护的内存 这通常指示其它内存已损坏”的异常,请问大师们这为毛???
C#调用C写的dll
我的步骤是这样的,大家帮忙看看。rn1。把c写的<em>dll</em>拷贝到<em>c#</em>工程的bin的debug下面。rn2。c的头文件如下rnextern "C" rnAMI_UTIL_API long AMI_UTIL_API_CALL getPropertyName(const char* propertyName1, char* propertyName2, int propertyNameLength);rnrn所以,在<em>c#</em>的代码里面,如下rn[DllImport("AmiUtil.<em>dll</em>", EntryPoint = "getPropertyName", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]rnprivate static extern long getPropertyName(string propertyName1, string propertyName2, int propertyNameLength);rn3。<em>调用</em>的时候,我写成如下rnstring str1, str2;rnnPropertyNameLength = 0;rngetPropertyName(str1, str2, nPropertyNameLength))rnrnrn正确的步骤和写法应该是怎么样的?
C#调用C DLL文件
这是我<em>调用</em>的 [DllImport("Zhuzhan.<em>dll</em>", EntryPoint = "IdentityAuthentication", CharSet = CharSet.Ansi)]rn static extern int IdentityAuthentication(string Div,byte[] RandAndEndata);rn他原始提供的是IdentityAuthentication(char* Div,char* RandAndEndata);rn 不过经常报错rnrn运行时遇到了错误。此错误的地址为 0x62ed646b,在线程 0xf9c 上。错误代码为 0xc0000005。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。rnrn
c#怎么调用C的DLL?
有以下疑惑:rn1、c++的<em>dll</em>和c的<em>dll</em>有什么区别?rn2、<em>c#</em><em>调用</em>c的<em>dll</em>的时候有什么不同?rnrn有人说,<em>c#</em><em>调用</em>c的<em>dll</em>还要中间加一层c++的封装?rnrn另,我用vc6写以下的代码,有什么错?rnrn[code=C/C++]rn//<em>dll</em>.cpprn#include "Dll.h " rnint add(int a,int b) rn rnreturn a+b; rn rnint subtract(int a,int b) rn rnreturn a-b; rn rnrn[/code]rn[code=C/C++]rn//<em>dll</em>.hrnextern "C " _declspec(<em>dll</em>import) int add(int a,int b); rnextern "C " _declspec(<em>dll</em>import) int subtract(int a,int b); rn[/code]
C# 调用 C 写的DLL
'int __stdcall GetBasicInfo(HANDLE icdev,unsigned long &CardSN); rnPrivate Declare Function GetBasicInfo Lib "CMCC.<em>dll</em>" (ByVal icdev,ByRef CardSN&) As Longrn rn上面是 VB 6.0 中<em>调用</em> C DLL的代码 rn------------------------------------------------------------------------------------ rn那么 C# 遇到 &CardSN 该怎么写呢,请教,不胜感激 rn
C#使用C语言DLL的问题
C<em>语言</em>Dll函数如下:rn__declspec(<em>dll</em>export) void mfun(double x[9],double y[7])rnrn函数中对这两个数组进行操作rnrnC#中定义两个数组 A , B,<em>调用</em>mfun(A,B), 要求C<em>语言</em>中对数组x,y的改变在C#中得到反映,即A B也发生改变。不胜感激。rn我目前的<em>问题</em>是我在C#中可以<em>调用</em>这个函数,但一<em>调用</em>就出错,可能是<em>调用</em>格式的<em>问题</em>,请大侠告诉我<em>问题</em>所在,若是格式<em>问题</em>说明的详细点。rn也有可能是因为<em>c#</em>中数double是64位而C中是32位,所以需要转化下,但我不知道怎么转化
c语言dll问题
各位大虾好,小弟有个<em>问题</em>,如下:rnrn 现在有一个c<em>语言</em>的程序,我想通过<em>c#</em>来<em>调用</em>它的一些函数接口,可不可以这样,编写一个<em>dll</em>文件,这个文件来访问rn这个c<em>语言</em>程序,然后向外提供一个函数接口,由<em>c#</em>来<em>调用</em>。rnrn<em>问题</em>是 :1.<em>dll</em>文件能不能完成这样的工作?rn 2.如果<em>dll</em>文件能完成这样的工作,那么最后是否需要将这个c<em>语言</em>程序和对应的<em>dll</em>文件都rn 拷贝到<em>c#</em>工程目录下?rn 3.有没有其他的好方法?rnrn谢谢。rnrn
C#调用C的dll的CString的问题
拿到的<em>dll</em>是C++写的,里面有CString的数据类型,用C#该怎么用呢?高手指正一下。
关于C#调用C写的Dll的问题
C API声明如下:rnint WINAPI SMGPSendSingle( rn int nNeedReport,rn int nMsgLevel,rn const char* sServiceID,rn int nMsgFormat,rn const char* sFeeType,rn const char* sFeeCode,rn const char* sFixedFee, rn const char* sValidTime,rn const char* sAtTime,rn const char* sSrcTermID,rn const char* sChargeTermID,rn const char* sDestTermID,rn int nMsgLen,rn const char* sMsgContent,rn char* sMsgID,rn int* pnErrorCode,rn char* pMsgType = NULL,rn char* pReserved = NULL,rn const int* pTP_pid = NULL,rn const int* pTP_udhi = NULL,rn const char* pLinkID = NULL,rn const char* pMsgSrc = NULL,rn const int* pChargeUserType = NULL,rn const int* pChargeTermType = NULL,rn const char* pChargeTermPseudo =NULL,rn const int* pDestTermType = NULL,rn const char* pDestTermPseudo = NULL,rn const int* pPkTotal = NULL,rn const int* PkNumber = NULL,rn const int* pSubmitMsgType = NULL,rn const int* pSPDealResult = NULL, rn const char* pMServiceID = NULLrn );rnrn我用C#写的<em>调用</em>代码如下:rn[DllImport("SmgpDll.<em>dll</em>", EntryPoint = "SMGPSendSingle")]rn private static extern int SMGPSendSingle( rn int nNeedReport,int nMsgLevel,string sServiceID,int nMsgFormat,string sFeeType,string sFeeCode, //[7]rn string sFixedFee,string sValidTime,string sAtTime,string sSrcTermID,string sChargeTermID, //[22]rn string sDestTermID,int nMsgLen,string sMsgContent,rn [Out]StringBuilder sMsgID, ref int pnErrorCode, StringBuilder pMsgType, StringBuilder pReserved, ref int pTP_pid,rn ref int pTP_udhi, string pLinkID, string pMsgSrc, ref int pChargeUserType,rn ref int pChargeTermType, string pChargeTermPseudo, ref int pDestTermType, string pDestTermPseudo,rn ref int pPkTotal, ref int PkNumber, ref int pSubmitMsgType, ref int pSPDealResult, string pMServiceID);rnrn每次<em>调用</em>就报"尝试读取或写入受保护的内存。这通常指示其他内存已损坏。"rn请高手解答
C#调用C/C++ dll问题
C/C++ DLL里的函数定义:rnextern "C" __declspec(<em>dll</em>export) int __stdcall pfs_login (char request[], char response[],int bufSize, char address[]);rnresponse是输出参数,其他的全部是输入参数rnrn在<em>c#</em>里怎么<em>调用</em>这个<em>dll</em>,不知道怎么写。谢谢。
C# 调用 C/C++ DLL的问题!
方法都能成功<em>调用</em>,但是回调函数都不能<em>调用</em>,我用的委托。
c# 调用c/c++ dll 参数问题
该文章纯属笔记,遇到一个<em>问题</em>,就在纪录到这里,方便以后的查询。 1:我们有时候想得到c/c++ 参数的返回值。(2016-10-13)              C/C++函数原型:                    MotionControl(char *command,char *confirm,char *message);             此处我们想获取mess
C#调用C的dll文件问题
现在我有个C写的c.<em>dll</em>文件,想在C#里<em>调用</em>,有一个函数是传给结构体的,不知道在C#中怎么写这函数。rn这个函数是:rnint initialize(CCallbackInterface *CCallbackInterface)rn参数名 类型 描述rnCCallbackInterface CCallbackInterface* 回调函数指针结构体rnrn我在c.h里看到CCallbackInterface这结构是:rnrnstruct _CALLBACKINTERFACErn void (*onGetCapabilityToken)(); rn void (*onConnected)(); rn void (*onConnectError)(int reason); rn...rn;rntypedef struct _CALLBACKINTERFACE CCallbackInterface;rnrn现在我在C#中这样用rnpublic struct _CALLBACKINTERFACErn void onGetCapabilityToken(); rn void onConnected(); rn void onConnectError(int reason); rn ...rn rnrn[DllImport("c.<em>dll</em>", EntryPoint = "initialize")] //初始化rn public static extern int initialize(_CALLBACKINTERFACE CCallbackInterface); rnrn我不知道对不对,因为我不知道在窗口cs中<em>调用</em>这个initialize的时候_CALLBACKINTERFACE这个要怎么传,知道的指教下,谢谢
C# 调用C/C++ dll 问题
C/C++ rn DWORD _stdcall GetSerialNumrn(rn IN HANDLE hCard, rn OUT BYTE bSerial[NUMLEN] rn);rnrn我写的:rn [DllImport("HS.<em>dll</em>", EntryPoint = "GetSerialNum")]rn public static extern uint GetSerialNum([In]uint handl, [MarshalAs(UnmanagedType.LPArray)] byte[] data);rnrn<em>调用</em>方法:rn byte[] array= new byte[255];rn Common.GetSerialNum(KeyHandle, array);rnrn返回来的array 我用Encoding.Default.GetString(array)转换,拿到的是乱码rn
C#中调用C生成的Dll 问题
C#中<em>调用</em>C生成的Dll,总报程序发生异常错误..不懂为什么..rnC的代码:rnint Sum(int a,int b)rnrn return a+b;rnrnC#中<em>调用</em>的代码:rn class Dllrn rn [DllImport("EssDll.<em>dll</em>",EntryPoint="Sum",rn CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]rn public static extern int Sum(int a,int b);rnrn /// rn /// 应用程序的主入口点。rn /// rn [STAThread]rn static void Main(string[] args)rn rn Console.Write("Dll测试开始\n");rn Console.Write(Sum(5,6).ToString());rn Console.Write("\n前面<em>调用</em>Dll完成!\n");rn string ok = Console.ReadLine();rn rn rnrnC生成Dll是用Cywin来生成的,命令如下:rnEssDll:rn gcc -g -c ./src/EssDll.c -I./include -L./librn <em>dll</em>wrap -o EssDll.<em>dll</em> EssDll.o --def ./src/EssDll.defrn mv ./EssDll.o ./obj/rn mv ./EssDll.<em>dll</em> ./bin/rnrn*.def文件如下:rnLIBRARY EssDllrnEXPORTS rn Sum
C#调用C dll出现的问题
C <em>dll</em> 代码中的输出函数1rnextern "C" __declspec(<em>dll</em>export) int ConnectServer(char cUser[64],rn char cPass[64],char cIp[32],char cNEName[64]);rnrnC#对应的函数形式我写成如下:rnpublic static extern int ConnectServer(byte[] cUser, byte[] cPass, byte[] cIp, byte[] cNEName);rn rn这样使用:rn byte[] user = new byte[64];rn byte[] password = new byte[64];rn byte[] ip = new byte[32];rn byte[] NEName = new byte[64];rn ConnectServer(user, password, ip, NEName);rnrn最后报错,报错内容:外部组件发生异常,难道是我的参数类型有<em>问题</em>?rnrnrnrnrnC <em>dll</em> 代码中的输出函数2rnextern "C" __declspec(<em>dll</em>export) void disConnectServer();rnC#对应的函数形式rnpublic static extern void disConnectServer();rn这个连参数也没有,<em>调用</em>后报错:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。rnrnrn请问大概是什么原因,是我的C <em>dll</em>有<em>问题</em>,还是C#的使用方法有<em>问题</em>,谢谢!
关于C#调用c的dll是的问题
#define IMAGE_WIDTH (352)rn#define IMAGE_HEIGHT (288)rn uint8_t frameData[65536];rn uint8_t imageRGB[IMAGE_WIDTH* IMAGE_HEIGHT*3];rnrn void* g_dec_handler = h264_dec_init();rn if(!g_dec_handler) return FALSE;rn//开始解码rnwhile(1)。。。。。。。。。。。。。。。。。。rnrn我现在的改写的C#代码是static void Main(string[] args)rn rn const int IMAGE_WIDTH =352;rn const int IMAGE_HEIGHT=288;rn byte [] frameData;rn frameData =new byte [65536];rn byte[] imageRGB;rn imageRGB = new byte[IMAGE_WIDTH * IMAGE_HEIGHT * 3];rn下面就有<em>问题</em>了。。不知怎么写了。。。求大侠解释。在线等。rn
C# 调用C dll文件,无法加载问题
如图在VS中直接引用添加时出现错误。需要直接将<em>dll</em>添加到项目生成的exe同一个文件夹下,或者在Import时采样绝对路径或相对路径方式。
C#调用C/C++ DLL函数问题
C/C++函数原型为:rnLMUSB_HANDLE __stdcall InitializeDevice(unsigned short usVID,rn unsigned short usPID,rn LPGUID lpGUID,rn BOOL *pbDriverInstalled);rnLMUSB_HANDLE 定义为 typedef void *LMUSB_HANDLE;rnLPGUID 定义为 typedef GUID *LPGUID;rnGUID 定义为 typedef struct _GUID rn unsigned long Data1;rn unsigned short Data2;rn unsigned short Data3;rn unsigned char Data4[ 8 ];rn GUID;rnrnrnC#中重新声明函数为rn[DllImport("LMUSBDLL_TEST.<em>dll</em>")]rnpublic static extern Byte[] InitializeDevice(UInt16 usVID, UInt16 usPID, ref GUID lpGUID,rn ref bool pbDriverInstalled);rnpublic struct GUIDrnrn private UInt32 Data1;rn private UInt16 Data2;rn private UInt16 Data3;rn [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]rn private Byte[] Data4;rnrn public GUID(UInt32 DT1, UInt16 DT2, UInt16 DT3, Byte []DA4)rn rn this.Data1 = DT1;rn this.Data2 = DT2;rn this.Data3 = DT3;rn this.Data4 = DA4;rn rnrnrn<em>调用</em>如下:rnstatic Byte[] DA4_INITIAL = 0xB7, 0x72, 0xb3, 0xAF, 0x2B, 0x6F, 0xDE, 0x1C ;rnstatic GUID GUID_DEVINTERFACE_STELLARIS_BULK = new GUID(0x6E45736A, 0x2B1B, 0x4078, DA4_INITIAL);rnrnByte []hUSB;rnbool bDriverInstalled = false;rnhUSB = InitializeDevice(IT300_BULK_VID, IT300_BULK_PID, ref GUID_DEVINTERFACE_STELLARIS_BULK, ref bDriverInstalled);rn编译成功,运行出错如下:rnrn未经处理的异常: System.Runtime.InteropServices.MarshalDirectiveException: 无法rn封送处理“return value”: 无效的托管/非托管类型组合。rn 在 ConsoleApplication_CsharpReUseCppDll_Test.Program.InitializeDevice(UInt16rnusVID, UInt16 usPID, GUID& lpGUID, Boolean& pbDriverInstalled)rn 在 ConsoleApplication_CsharpReUseCppDll_Test.Program.Main(String[] args) 位置rn E:\IT-300-DXWindowsApplicationRegisted-N1\ConsoleApplication_CsharpReUseCppDll_rnTest\Program.cs:行号 165rn请按任意键继续. . .rnrnrnInitializeDevice定义如下:rnrnextern "C" __declspec(<em>dll</em>export) LMUSB_HANDLE PASCAL EXPORTrnInitializeDevice(unsigned short usVID,rn unsigned short usPID,rn LPGUID lpGUID,rn BOOL *pbDriverInstalled)rnrnrn return(InitializeDeviceByIndex(usVID, usPID, lpGUID, 0, true,rn pbDriverInstalled));rnrnrnrnrnextern "C" __declspec(<em>dll</em>export) LMUSB_HANDLE PASCAL EXPORTrnInitializeDeviceByIndex(unsigned short usVID,rn unsigned short usPID,rn LPGUID lpGUID,rn DWORD dwIndex,rn BOOL bOpenDataEndpoints,rn BOOL *pbDriverInstalled)rnrnrn BOOL bResult;rn WINUSB_INTERFACE_HANDLE usbHandle;rn USB_INTERFACE_DESCRIPTOR ifaceDescriptor;rn WINUSB_PIPE_INFORMATION pipeInfo;rn UCHAR speed;rn ULONG length;rn DWORD dwError;rn int i;rn tDeviceInfoWinUSB *psDevInfo;rnrn if(!lpGUID || !pbDriverInstalled)rn rn return(NULL);rn rn psDevInfo = (tDeviceInfoWinUSB *)LocalAlloc(LPTR, sizeof(tDeviceInfoWinUSB));rn if(!psDevInfo)rn rn return(NULL);rn rn psDevInfo->deviceHandle = OpenDeviceByIndex(dwIndex, lpGUID);rn if(psDevInfo->deviceHandle == INVALID_HANDLE_VALUE)rn rn dwError = GetLastError();rn *pbDriverInstalled = (dwError == ERROR_DEV_NOT_EXIST) ? FALSE : TRUE;rn LocalFree((HLOCAL)psDevInfo);rn return(NULL);rn rnrn bResult = WinUsb_Initialize(psDevInfo->deviceHandle, &usbHandle);rn if(bResult)rn rn psDevInfo->winUSBHandle = usbHandle;rn length = sizeof(UCHAR);rn bResult = WinUsb_QueryDeviceInformation(psDevInfo->winUSBHandle,rn DEVICE_SPEED,rn &length,rn &speed);rn rnrn if(bOpenDataEndpoints)rn rnrn if(bResult)rn rn psDevInfo->deviceSpeed = speed;rn bResult = WinUsb_QueryInterfaceSettings(psDevInfo->winUSBHandle,rn 0,rn &ifaceDescriptor);rn rnrn if(bResult)rn rn for(i=0;iwinUSBHandle, 0, (UCHAR) i,rn &pipeInfo);rnrn if((pipeInfo.PipeType == UsbdPipeTypeBulk) &&rn USB_ENDPOINT_DIRECTION_IN(pipeInfo.PipeId))rn rn psDevInfo->bulkInPipe = pipeInfo.PipeId;rn rn else if((pipeInfo.PipeType == UsbdPipeTypeBulk) &&rn USB_ENDPOINT_DIRECTION_OUT(pipeInfo.PipeId))rn rn psDevInfo->bulkOutPipe = pipeInfo.PipeId;rn rn elsern rn SetLastError(ERROR_NOT_SAME_DEVICE);rn bResult = FALSE;rn break;rn rn rn rnrn if(bResult)rn rn psDevInfo->hReadEvent = CreateEvent(NULL, TRUE, FALSE, NULL);rnrn if(psDevInfo->hReadEvent)rn rn bResult = true;rn rn rn rn elsern rn psDevInfo->bulkOutPipe = 0;rn psDevInfo->bulkInPipe = 0;rn psDevInfo->hReadEvent = NULL;rn rnrn if(bResult)rn rn return((LMUSB_HANDLE)psDevInfo);rn rn elsern rn LocalFree((HLOCAL)psDevInfo);rn return(NULL);rn rnrnrn求教各路大虾,如何解决“无法封送处理“return value”: 无效的托管/非托管类型组合。”的<em>问题</em>?
C#中调用c生成dll问题
如有xx.<em>dll</em>,rn在c代码中,rn函数为:rninter* add (inter * a , inter *b);rn其中inter为结构体。rn用<em>c#</em><em>调用</em>rnclase interrn[StructLayout(LayoutKind.Sequential)]rnrn...rnrn[DllImport("xx.<em>dll</em>")]rnrn public extern static (返回值) add ((返回值), (返回值));rnrn该函数返回值应该怎么写,参数应该怎么写。因为c代码中定义的该函数返回值和参数都是指针。rn
C#调用C动态DLL问题
我的系统为2003,用C写的DLL类库,C#的窗体去<em>调用</em>,没有<em>问题</em>。rn同样的项目,拿到XP系统下,<em>调用</em>就出现异常。rn这是部分错误信息.rnrn 有关<em>调用</em>实时(JIT)调试而不是此对话框的详细信息,rn请参见此消息的结尾。rnrn************** 异常文本 **************rnSystem.Runtime.InteropServices.COMException (0x8007007A): 传递给系统<em>调用</em>的数据区域太小。 (异常来自 HRESULT:0x8007007A)rnrn
c#调用c编写的dll问题,char*
最近在弄一个rfid读卡的测试模块。需要<em>调用</em>c/c++编写的<em>dll</em>。但是一直弄不对,请大侠帮忙rnrn<em>dll</em>函数原型rn函数声明 int WINAPI mifs_request_2(uchar _Mode, uchar *_TagType)rn功能描述 寻卡rn入口参数 _ Mode:模式 0x26 rn出口参数 TagType:卡类型rn返 回 值 0—成功,﹥0—失败rnrnrn<em>c#</em>的代码rn函数定义rn [DllImport("MifsDLL.<em>dll</em>", CharSet = CharSet.Ansi)]rn private static extern int mifs_request_2(rn byte bMode,rn StringBuilder strbCardTypern );rn函数<em>调用</em>rn int iRet;rn StringBuilder strbCardType = new StringBuilder(255);rn iRet = -1;rn for (int i = 0; i < PublicVar.iGL_RetryTimes; i++)rn rn iRet = mifs_request_2(0x26, strbCardType);rn MessageBox.Show(strbCardType.ToString());rn if(iRet == 0)rn break;rn rnshow出来的是乱码,不知道为什么
C# 调用c的dll,char*指针的问题
要做一个读卡器的程序,厂商提供的C的<em>dll</em>,其中有个函数用到CHAR*,请各位大侠指导。rn函数说明如下:rn2.3.2 读卡片非认证区信息,即2-7BLOCK的信息 iReadPlantDatarnint iReadPlantData(int handle,int offset,int datalen,char * dataBuf)rn功能:读卡片非认证区信息rn输入:int handle读写器句柄rn int offset:偏移量,为4的倍数,从0-20之间取值rn int dataLen:写入数据的长度,为4的倍数,从4-24之间取值rn[b]输出:char * dataBuf:需要更新的数据,为16进制格式。[/b]rn返回:0,非认证区信息读出正确。rn 非0,错误。rnrnrn我是这样写的(略去无关代码)rn public unsafe class Cardrn rn [DllImport("pumchric.<em>dll</em>", CharSet = CharSet.Auto)]rn public static extern int iReadPlantData(int handle,int offset,int datalen,char * dataBuf);rn rnrn private void button1_Click(object sender, EventArgs e)rn rn char dataBuf; rn i = Card.iReadPlantData(50, 0, 24, &dataBuf);rn textBox2.Text = Convert.ToString(dataBuf);rn rn[b]char * dataBuf这个位置应该保存着一个字符串。[/b]现在程序可以运行,但读出来的是一个乱码(可能是只读了第一个字符??),CHAR*在C#中如何使用?如何改?
C#调用C写的DLL的相关问题...
我现在手头上有3份DLL,和对应的.LIB,.H文件...(开源的项目,非盗用)rnrn<em>问题</em>是这样的,如果直接用C#来<em>调用</em>DLL的话,需要重写大量的结构体(好象是要吧)...rnrn某位高人提示我说用COM重新把DLL封装,提供给C#使用...rnrn但是我对COM不熟悉,能不能提供相关的范例,或者意见呢?rnrn这几份<em>dll</em>来自ffmpeg(http://www.chinavideo.org/index.php?option=com_remository&Itemid=0&func=download&id=68&chk=50e2111e68e2a02aca4fbb54540ab8b4)的SDK版本...rnrn有人可以帮忙做个范例吗?rnrn我使用的是VS 2005...
C#的调用C的dll问题,急!
在C中使用的结构体是:rntypedef struct _Assetarrayrn u_short port;rn char* ip_addr;rn char* service;rn char* application;rn int discovery;rnAssetarray;rnrn我在C#中这样<em>调用</em>不行rn[ StructLayout( LayoutKind.Sequential ) ]rn public struct Assetarrayrn rn public ushort port;rn [MarshalAs(UnmanagedType.LPArray)]rn public byte[] ip_addr;rn [MarshalAs(UnmanagedType.LPArray)]rn public byte[] service;rn [MarshalAs(UnmanagedType.LPArray)]rn public byte[] application;rn public int discovery;rn ;rnrn [DllImport("pads.<em>dll</em>", CharSet = CharSet.Auto)]rn public static extern int main_pads(Assetarray[] assetarray1);rn请问各位,上面的Assetarry结构体在C#对应什么? 我<em>调用</em>main_pads,传进参数数组Assetarray,rnAssetarray在函数里面赋值,然后我能在C#中使用assetarray1的数据.rn
c#调用c生成的dll文件的问题
C#<em>调用</em>c生成的<em>dll</em>文件,其中的函数的返回类型为void* 型,如void *fun(ushort a)rn请问在<em>c#</em>中应如何<em>调用</em>?
求救,C# 调用C编写的dll问题
C原型:rntypedef enum _SUPPORT_LAYERrn rn HDLC = 0x01,rn TCPIP,rn UDPIPrn SUPPORT_LAYER;rn rn typedef union _ADDRrnrn structrn rn unsigned int ServerLowerAddr : 14; //服务器低地址rn unsigned int ServerUpperAddr : 14; //服务器高地址rn unsigned int res : 4;rn unsigned char ClientAddr;rn unsigned char ServerAddrLen;rn HDLC_ADDR1;rnrn structrn rn unsigned int ServerAddr : 28;rn unsigned int res : 4;rn unsigned char ClientAddr;rn unsigned char ServerAddrLen;rn HDLC_ADDR2;rnrn structrn rn unsigned int Client_TCP_Port;rn unsigned int Server_TCP_Port;rn unsigned char Client_IP_Addr[4];rn unsigned char Server_IP_Addr[4];rn TCPIP_ADDR;rnrn structrn rn unsigned int Client_wPort;rn unsigned int Server_wPort;rn unsigned int Client_UDP_Port;rn unsigned int Server_UDP_Port;rn unsigned char Client_IP_Addr[4];rn unsigned char Server_IP_Addr[4];rn UDPIP_ADDR; rnADDR;rnrn int ProcessServicePrimitive(unsigned char **OUTData, unsigned int &OUTDataLen,SUPPORT_LAYER SupportLayerType, ADDR Addr,const unsigned char *Xml, unsigned int XmlLen);rn请问如何用C#<em>调用</em>ProcessServicePrimitive参数?
求救C#调用C做的DLL问题!!!
DLL文件名:CV.<em>dll</em>rnDLL中有个函数定义如下:rn extern "C" BOOL _stdcall OutConversion(unsigned char cmdid,Conversion* para);rnrn参数Conversion 是一个结构:rnstruct Conversion rn unsigned char CmdIdrn unsigned short MsgNo;rn unsigned char LifeCycle[4];rn UINT TimeOrCount;rn UINT32 Timer[48]; rn UINT32 StartDate; rn UINT32 EndDate;rn rn UINT StayValue; rn unsigned char MoveMode;rn unsigned short ContentLen; rn unsigned char Data[400]; rn rn unsigned char *pcontent;rn unsigned char Time[7]; rn UINT BriData[8];rn;rnrnrn现在要在C#中<em>调用</em>它,我该怎么引用它并定义参数? 请各位大侠多多指教~rnrn
调用C的Dll的问题
这是<em>dll</em>中的C<em>语言</em>代码rntypedef structrnrnlong readertype;rnlong cardtype;rnlong port;rnlong baud;rnhandle commdevice;rnlong timeout;rnchar *pin;rnchar *key;rnchar *hostaddr;rnlong hosttimeout;rnchar *cardsn;rnlong optype;rnchar reserved[32];rnicc_env;rnrntypedef structrnrnunsigned char *pin;rnunsigned char *idcard;rnunsigned char *name;rnunsigned char *sex;rnunsigned char *birth;rnunsigned char *workdate;rnunsigned char *retiredate;rnlong salary;rnlong annuity;rnunsigned char *areacode;rnunsigned char *companyid;rnlong personaltype;rnicc_personal;rnrn这是pb的<em>调用</em>声明rnFUNCTION INT IC_Personal (INT FlagOp, ICC_ENV iccenv, REF ICC_Personal data) Library "iccinter.DLL"rnFUNCTION INT IC_OpenSession (REF ICC_ENV iccenv) Library "iccinter.DLL"rnFUNCTION INT IC_CloseSession (REF ICC_ENV iccenv) Library "iccinter.DLL"rnrndelphi中应该如何声明,<em>调用</em>?
调用C DLL的问题
各位DX好,小弟在用VB<em>调用</em>C写的DLL时,出现<em>问题</em>.rnDLL中的函数是:int WINAPI Open_COMPORT(unsigned char baud1[],int ComNo,int Data)rn我在<em>调用</em>时,这个unsigned char baud1[]该怎么样传值进去呢?
调用C的dll问题
我有个C的<em>dll</em>,现使用delphi来<em>调用</em>它,编译通过,运行时出现异常,请高手指点?rnC的<em>dll</em>中有如下函数:rnint SendSingle(const int nNeedReply,rn const int nMsgLevel,rn const char *sServiceID,rn const int nMsgFormat,rn const char *sFeeType, rn const char *sFeeCode,rn const char *sValidTime,rn const char *sAtTime,rn const char *sChargeTermID,rn const char *sDestTermID,rn const char *sReplyPath,rn const int nMsgLen,rn const char *sMsgContent,rn char *sMsgID, rn int *nErrorCode);rnrn在delphi中声明如下:rnfunction SendSingle(const nNeedReply:integer;rn const nMsgLevel:integer;rn const sServiceID:pchar;rn const nMsgFormat:integer;rn const sFeeType:pchar;rn const sFeeCode:pchar;rn const sValidTime:pchar;rn const sAtTime:pchar;rn const sChargeTermID:pchar;rn const sDestTermID:pchar;rn const sReplyPath:pchar;rn const nMsgLen:integer;rn const sMsgContent:pchar;rn sMsgID:string; rn nErrorCode:pointer):integer;stdcall;external 'AA.<em>dll</em>';rn然后定义变量: rn //定义数据类型rn nNeedReply:integer;rn nMsgLevel :integer;rn sServiceID:string;rn nMsgFormat:integer;rn sFeeType :string;rn sFeeCode :string;rn sValidTime:string;rn sAtTime :string;rn sChargeTermID:string;rn sDestTermID:string;rn sReplyPath :string;rn nMsgLen:integer;rn sMsgContent:string;rn sMsgID:string;rn nErrorCode:integer; rnrn对各个值赋值处理;rn
c#调用DLL问题
被<em>调用</em>123.DLL C++编写 解密的,rnrn Return : 0 Successrn -1 Invalid Datrnrnint CardNoDecrypt( char* z_Data, char* z_CardNo )rn传入一个加密号码z_Data ,传出解密后的号码z_CardNornrnNET C#怎么写????rn
C#调用dll问题
无法加载 DLL“MapLicenseXP.<em>dll</em>”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。rnrn可能会是什么原因?谢谢!或者怎样找到<em>问题</em>!
C# 调用DLL问题
那位大侠帮我看看这个DLL<em>调用</em>,在Delphi中<em>调用</em>可以正常,在C#中一直出错,delphi的源代码 和<em>dll</em>的函数都附上。还有我用C#写的程序也一起附上,望高手给小弟看看,在C#中如何<em>调用</em>;rnrnCodernUSBDRVD_GetDevCount() //获取设备函数rnrnUINT USBDRVD_GetDevCount(IN GUID * DeviceClassGUID); //函数声明 rnrnrnExample:rnUINT DeviceCount = USBDRVD_GetDevCount(&GUID);rnrnrnrn//一下为DELPHI <em>调用</em> 可以正常显示rnunit Unit1;rnrninterfacernrnusesrn Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,rn Dialogs, StdCtrls, ExtCtrls;rntypern _GUID_ = recordrn l: DWORD;rn s1: WORD;rn s2: WORD;rn c: array[1..8] of BYTE;rn end _GUID_;rntypern TForm1 = class(TForm)rn Button1: TButton;rn Timer1: TTimer;rn btnUSB: TLabel;rn procedure Timer1Timer(Sender: TObject);rn procedure FormCreate(Sender: TObject);rn procedure Button1Click(Sender: TObject);rn privatern USB_GUID:_GUID_;rn Private declarations rn publicrn Public declarations rn end;rnrnvarrn Form1: TForm1;rn DevCount:LONGINT;rnimplementationrnrn$R *.dfmrnfunction USBDRVD_GetDevCount(const p: _GUID_): Integer; stdcall;rnexternal 'usbdrvd.<em>dll</em>';rnrnprocedure TForm1.Timer1Timer(Sender: TObject);rnbeginrn DevCount:= USBDRVD_GetDevCount(USB_GUID);rn btnUSB.Caption:= 'USB '+'( '+ inttoStr(DevCount)+' )';rnend;rnrnprocedure TForm1.FormCreate(Sender: TObject);rnbeginrn USB_GUID.L:=$8B021AA5;rn USB_GUID.S1:=$A319;rn USB_GUID.S2:=$45C1;rn USB_GUID.c[1]:=$93;rn USB_GUID.c[2]:=$2C;rn USB_GUID.c[3]:=$90;rn USB_GUID.c[4]:=$AA;rn USB_GUID.c[5]:=$82;rn USB_GUID.c[6]:=$E6;rn USB_GUID.c[7]:=$47;rn USB_GUID.c[8]:=$8D;rnend;rnrnprocedure TForm1.Button1Click(Sender: TObject);rnbeginrnclose;rnend;rnrnend.rnrnrn rn///下边为C#<em>调用</em> 提示 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。rnusing System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Data;rnusing System.Drawing;rnusing System.Text;rnusing System.Windows.Forms;rnusing System.Runtime.InteropServices;rnnamespace _5rnrn public partial class Form1 : Formrn rn public struct UINIrn rn public Int64 L;rn public Int64 S1;rn public Int64 S2;rn public Byte[] c;rn rn rn public int DevCount;rn public UINI USB_GUID;rn rn public Form1()rn rn InitializeComponent();rn rnrn [DllImport("usbdrvd.<em>dll</em>")]rn public static extern Int32 USBDRVD_GetDevCount(UINI USB_GUID);rnrn private void button1_Click_1(object sender, EventArgs e)rn rn Application.Exit();rn rnrn private void Form1_Load(object sender, EventArgs e)rn rn rn USB_GUID.c = new Byte[8];rn USB_GUID.L=0x8B021AA5;rn USB_GUID.S1=0xA319;rn USB_GUID.S2=0x45C1;rn USB_GUID.c[0]=0x93;rn USB_GUID.c[1]=0x2C;rn USB_GUID.c[2]=0x90;rn USB_GUID.c[3]=0xAA;rn USB_GUID.c[4]=0x82;rn USB_GUID.c[5]=0xE6;rn USB_GUID.c[6]=0x47;rn USB_GUID.c[7]=0x8D;rnrn rnrn private void timer1_Tick(object sender, EventArgs e)rn rn tryrn rnrn DevCount = USBDRVD_GetDevCount(USB_GUID);rn btnUSB.Text = "USB " + DevCount;rn rnrn catchrn rn btnUSB.Text = "USB " + "no fund";rn rn rn rn rn rnrnrnC# 获取不到设备的信息rn [DllImport("usbdrvd.<em>dll</em>")]rn public static extern Int32 USBDRVD_GetDevCount(UINI USB_GUID);rn这块应该怎么<em>调用</em>usbdrvd.<em>dll</em>呢?
C#调用DLL的问题
char* strParameters[4];rn strParameters[0] = (char*)malloc(256);rn strParameters[1] = (char*)malloc(256);rn strcpy(strParameters[0],"F:\\abc\\");rn strcpy(strParameters[1],"F:\\abc\\");rn int nRet = m_InitConnect(strParameters,4);rnrnrn以上是在C++中<em>调用</em>m_InitConnect DLL动态链接库中的m_InitConnect这个方法.rn如果在C#中该如何写?rnrnchar* strParameters[4] 要转成什么?
C#调用dll问题
我用C#<em>调用</em>自己用VC编写的一个<em>dll</em>里面的方法,但是运行时出现了EntryPointNotFoundException,请问这是为什么?(方法的名称和入口参数都没错)是我的<em>dll</em>写的有<em>问题</em>时是其他原因?
C#调用DLL问题
我准备用C#<em>调用</em>一个API库函数,这是一个读卡器的函数库,主要是对读卡器的一些操作。 rnrn其中有一个函数是读取出卡内的值,函数说明如下: rn int _stdcall MF_HL_Read(int DeviceAddr, unsigned char block, unsigned char *buffer); rn功能:高级读卡函数 rn参 数: DeviceAddr: 设备地址,0 对所有设备有效。 rnblock: 操作块号,0~63(S50)或0~255(S70)。 rnbuffer:返回块数据,16个字节 rn返 回:成功则返回 0。 rnrn以下是我在C#中的声明和<em>调用</em>: rn[DllImport( "mf32.<em>dll</em> ")] rnprivate static extern int MF_HL_Read(int DeviceAddr,byte block,byte []buffer); rnpublic static bool HL_Read(int DeviceAddr,byte block,byte []buffer) rn rnint value=0; rnrnvalue=CardReaderWork.MF_HL_Read(DeviceAddr,block,buffer); rnrn//获取经过处理后卡中的值 rnCardReaderWork._cardValue=buffer; rnrn//根据返回值判断是否成功读取数据,成功则返回true,否则为false rnif(value==0) rn rn_errorCode=MI_OK; rnreturn true; rn rnelse rn rn_errorCode=value; rn_errorValue=CheckState(_errorCode); rnreturn false; rn rn rnrn这里说一下:_errorCode用来存储所产生的错误编码,这些是在库中已经定义好的,与之相对应的是所产生的错误的解释,用_errorValue存储。 rnrn这个方法我是写在一个类里面的,若只在本类进行操作,是可以的,不管出现什么结果,总之能够顺利执行,但我需要在窗体中去<em>调用</em>这个函数,这时候就报出了下面的错误:rnrn未处理的“System.TypeLoadException”类型的异常出现在 system.windows.forms.<em>dll</em> 中。rnrn其他信息: 未能从加载程序集 CardReader, Version=1.0.2869.32435, Culture=neutral, PublicKeyToken=null 中加载类型 CardReader.CardReaderWork,因为方法 MF_HL_Request 没有 RVA。rnrn我的<em>问题</em>是:该怎么解决这样的<em>问题</em>呢?
c# 调用DLL的问题
请问,<em>c#</em> 中<em>调用</em>DLL,除了引用之外,还有其他方法么 ?rn或者说好的方法
C# Dll调用问题
最近学了会C#在写DLL与<em>调用</em>时遇到了些<em>问题</em>。希望各位大大们帮下忙。rnrn我做的是一个选择类DLL,即rnusing System;rnusing System.Collections.Generic;rnusing System.Linq;rnusing System.Text;rnrn[code=C#]rnrn//以下为DLL接口部份rnusing System;rnusing System.Collections.Generic;rnusing System.Linq;rnusing System.Text;rnrnnamespace SelectClassrnrn public class MainClassrn rnrn public void SelectIO(string SelectProject, bool SelectMore, int SelectLevel)rn rn PublicClass.strSelectProject = SelectProject;rn PublicClass.strSelectMore = SelectMore;rn PublicClass.strSelectLevel = SelectLevel;rnrn switch (SelectProject)rn rn case "选择人员":rn PublicClass.strDataPath = System.AppDomain.CurrentDomain.BaseDirectory + "Database\\SystemData.mdb";rn break;rn case "选择地区":rn PublicClass.strDataPath = System.AppDomain.CurrentDomain.BaseDirectory + "Database\\SystemData.mdb";rn break;rn default:rn break;rn rnrn MainWindow mWindow = new MainWindow();rn mWindow.ShowDialog();rn rn rn rnrnrn //<em>调用</em>部分rn private void button1_Click(object sender, EventArgs e)rn rn SelectClass.MainClass sClass = new SelectClass.MainClass();rn sClass.SelectIO("选择地区", false , 1);rn rnrn[/code]rnrn<em>问题</em>:rn1.返回值是在我选定一条数据后点击确定后返回的。在不使用API情况下如何把这个值返回给<em>调用</em>窗口这边rn2.为什么数据库文件名使用System是会出错rn3.表名为 Password 时使用OleDbCommandBuilder生成命令时会出错。有办法解决吗?我现在使用的是OleDbCommand来执行SQL语句。rnrn分数不多了:20分见谅。rnrn
DLL在C#调用问题
DLL的原程序是用C写的. 在DLL文件, .h文件里面定义的数据结构WTLS_TERMINAL_MODE_BAG ,在C#<em>调用</em>的时候,编译不通过.rn[DllImport("xWTLS.<em>dll</em>")] public static extern int WTLS_terminalMode(WTLS_TERMINAL_MODE_BAG *Bag);rnrn有两个<em>问题</em>,rn1. 数据结构WTLS_TERMINAL_MODE_BAG ,没有找到, 怎么解决?rn2. 在C#里面没有指针,这个<em>问题</em>怎么处理?
c#调用 DLL问题
<em>c#</em><em>调用</em> DLL<em>问题</em>rnzcDll.<em>dll</em> 这是我写的VC做的, 我想在C#中<em>调用</em>,要把zcDll.<em>dll</em> 放在 c:\windows\system32中才能<em>调用</em>。rn可我想要是发布网站怎么办呀,不能也让人家把zcDll.<em>dll</em> 放在 c:\windows\system32中吧。rn网上有说右键点后加到资源中,我用的VS2005右键点没有什么选项呀。
C#调用dll问题
C#<em>调用</em><em>dll</em><em>问题</em>的解决办法,C#写的<em>dll</em>在其他<em>语言</em>中互相<em>调用</em>解决方法
C#调用dll问题
<em>dll</em>说明如下:rnrn[code=C/C++]rnrnC formatrnrnint32 pisn_getsnapshots( rnrnint32 PIPTR * ptrnrnfloat PIPTR * rval, rnrnint32 PIPTR * istat,rnrnint32 PIPTR * timedate, rnrnint32 PIPTR * error,rnrnint32 count );rnrn rnrnArgumentsrnrnpt (passed)rnrnArray of point numbersrnrnrval (returned)rnrnArray of values in engineering units, undefined for integer and digital pointsrnrnistat (returned)rnrnArray of statuses for type real points and values for integer and digital pointsrnrntimedate (returned)rnrnArray of time stampsrnrnerror (returned)rnrnArray of error codesrnrncount(passed)rnrnSize of the arraysrnrnrn[/code]rnrn我定义成下面的,但是<em>调用</em>的时候会出现各种异常,其中包括:rn1.尝试读取或写入受保护的内存。rn2.“System.ExecutionEngineException”的异常。rn3.签名类型不符。rn4.堆栈溢出。rnrn[code=C#]rn[DllImport("piapi32.<em>dll</em>")]rnpublic extern static int pisn_getsnapshots(int[] pt, ref float[] rval, ref int[] istat, ref int[] timedate, ref int[] error, int count);rn[/code]
c#调用dll问题
在逆向分析一个程序,看到 a.aspx里面的代码很简单(下面附有). 我想应该是进入到<em>dll</em> Web_6 里面去了,但是进去以后到底怎么执行的,我比较晕,不知道一般地程序流程走向是什么样的,带着什么样的思路来分析.rnrnrnrnrn rn SaveNewBillrn rn rn rn rn rn rn rn rn rn rnrn
c# 调用dll问题
<em>c#</em><em>调用</em><em>dll</em>,<em>dll</em>函数原型中参数中含有结构体,该结构体中又含有结构体,在<em>c#</em>中如何定义呢?<em>dll</em>中结构体如下rnstruct stDLL_CHANNEL_SENSOR_LIST rn int nSensorCount;rn float fWaveLengthVec[30];rn float fPowerDBVec[30];rn; rnstruct stDLL_CHANNEL_LIST rn int nChNum;rn int nFreq;rn stDLL_CHANNEL_SENSOR_LIST tSensorListVec[150];rn;rn
C# dll调用问题
不知道<em>dll</em>中的方法及函数 怎么<em>调用</em>啊?请高手指点
c#调用dll问题
vc++ Dll返回的字符串大于16就会出现超过最大容量限制rnrnextern "C" __declspec(<em>dll</em>export) char* CivFormat()rnrn return "12345678901234567"rnrnrn在<em>c#</em>中 rn[DllImport("WCInfo.<em>dll</em>",EntryPoint="CivFormat",CharSet = CharSet.Ansi)]rnpublic static extern StringBuilder CivFormat();rnrnrnStringBuilder asd = new StringBuilder(200);rnasd= CivFormat();rn那儿错了吗?分不够可以再加 求高手解决rn
c#调用dll问题
小弟是菜鸟, 在 <em>调用</em> c++的<em>dll</em> 的出了一个<em>问题</em>。rnc++ <em>dll</em>的函数为 int GetIDList(HANDLE khandle,char IDList[][20] , int &IDNum) rn我封装的<em>c#</em>函数为 public static extern int GetIDList(IntPtr khandle, char[][] IDList, ref int IDNum); rn我声明了一个数组 public char[][] ID_st; rn ID_st = new char[10000][];rn for (int i = 0; i < 10000;i++ )rn rn ID_st[i]=new char[20];rn rn但是在<em>调用</em>该函数后发生异常 ,说 运行的时候出异常了 无法封送处理“parameter #2”: 嵌套的数组不支持封送处理 rnrn然后我换一种封装方式 public static extern int GetIDList(IntPtr khandle, string[] IDList, ref int IDNum); rn string [] ID_st =new string[10000]; rn然后在<em>调用</em>函数后 ,可以运行 但是 string 数组中 都还是空的,没有得到赋值,各个高手 帮我看看 ,该怎样封装啊。
c# 调用dll问题
我要写一个程序操作串口,别人给了他的程序的<em>dll</em>,我能直接用么??只有<em>dll</em>文件哟
C#调用DLL的问题.
有一个 <em>dll</em>是别人提供的.我现在要<em>调用</em>里面的函数,用oleview在32位系统下是能看到里面的函数的.rn我注册之后 在C#中引用 com里找到这个组件引用进来. rn对象浏览器里看不到里面的方法.我每个 节点都检查了.都是空的.rn谁帮忙看下怎么才能<em>调用</em>里面的函数啊. 有点急.我整了一天各种方法都用上了.rn免注册com我也用了, 手动cmd注册引用 还是没用.rnrn下面是下载地址rnhttps://pan.baidu.com/s/1o8Q4jdKrn一共就这么多分了.全给了.
C#调用DLL问题
新学<em>c#</em>不太熟悉,公司发来了DLL文件要求开发客户端的软件,但是DLL的说明中只有方法名称,没有具体的传递参数格式,求问如何在C#上进行<em>调用</em>,越详细越好,谢谢各位
C#调用dll问题
1.代码:rn [DllImport("MyDll.<em>dll</em>")]rn public static extern int T2(int a,int b);rn错误提示:rn[color=#FF0000]无法加载 DLL“MyDll.<em>dll</em>”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。 [/color]rnrn
C#调用DLL问题???????
读卡。函数原形: 返回值:见注1。rnint ReadCard(char * room, char * gate,char * stime, char * guestname, char * guestid, char * track1, char * track2, long * cardno, int * st);rn参数:rnroom [out]:字符串指针,接收返回的房号,建议10字节。rngate [out]:字符串指针,接收返回的授权公共通道,可以为NULL。rnGuestname [out]:字符串指针,接收返回的客人姓名,可以为NULL。rnGuestid [out]:字符串指针,接收返回的客人ID,可以为NULL。rntrack1 [out]:接收磁卡第1轨数据,可以为NULL。rntrack2 [out]:接收磁卡第2轨数据,可以为NULL。rnCardno [out]:长整形指针,接收返回的卡号,可以为NULL。rnSt [out]:整形指针,接收返回的卡状态,1-正常使用,3-正常注销,4-遗失注销,5-损毁注销,6-自动注销。可以为NULL。rnrnrnchar * 测过对应的out string 或out StringBuild 或ref rnlong * 测过对应的out int 或 out long 或ref rnint * 测过对应的out int 或 out IntPtr 或refrnrn再在不知道啥原因了,求救,谢谢rnrnrnrn
c#调用dll问题.
在<em>dll</em>中rn有两个个函数 是 rnrnQMYCLIENT_API void * WINAPI Qmy_init(IN QMY_CALLBACKINTERFACE *callbackInterface);rnrnQMYCLIENT_API void WINAPI Qmy_unInit(IN void * hHandle);rnrn第二个函数的参数是第一个函数的返回值 .rnrn但我看第一个函数是个void。这个用<em>c#</em>要怎么写啊 。求教各位大神.
C# 调用dll问题
public void setKey(string pwd)rn rn uint serviceVersion = 0;rn IntPtr handle = IntPtr.Zero;rn if (WlanOpenHandle(WLAN_API_VERSION, IntPtr.Zero,rn out serviceVersion, out handle) == ERROR_SUCCESS)rn rn rn char[] key = pwd.ToCharArray();rn rn UInt32 dwKeyLength = (UInt32)(key.Length+1); rn IntPtr pucKeyData = Marshal.AllocHGlobal(sizeof(char));rn Marshal.Copy(key, 0, pucKeyData, key.Length); rn rn WLAN_HOSTED_NETWORK_REASON pFailReason;rn if (WlanHostedNetworkSetSecondaryKey(rn handle,rn dwKeyLength,rn pucKeyData,rn true,rn true,rn out pFailReason,rn IntPtr.Zerorn ) == ERROR_SUCCESS)rn rn Console.WriteLine("设置key成功!");rn rn elsern rn Console.WriteLine("失败原因:0", getReason(pFailReason));rn rn rn rnrnrn代码如上,想做的是给虚拟的wifi设置密码 提示错误如下rn 未经处理的异常: System.AccessViolationException: 尝试读取或写入受保护的内存rn函数原型是rn [DllImport("Wlanapi.<em>dll</em>", EntryPoint = "WlanHostedNetworkSetSecondaryKey")]rn public static extern UInt32 WlanHostedNetworkSetSecondaryKey(rn IntPtr hClientHandle,rn UInt32 dwKeyLength,rn IntPtr pucKeyData,rn bool bIsPassPhrase,rn bool bPersistent,rn out WLAN_HOSTED_NETWORK_REASON pFailReason,rn IntPtr pvReservedrn );rn求大神解答
软件工程答案下载
软件工程导论第五版课后习题答案 张海藩编著 相关下载链接:[url=//download.csdn.net/download/qq649970452/3711620?utm_source=bbsseo]//download.csdn.net/download/qq649970452/3711620?utm_source=bbsseo[/url]
2011年计算机考研真题解析下载
2011年计算机考研真题解析,408计算机综合,真题及解析 相关下载链接:[url=//download.csdn.net/download/a785143175/3727355?utm_source=bbsseo]//download.csdn.net/download/a785143175/3727355?utm_source=bbsseo[/url]
MATLAB神经网络30个案例分析下载
神经网络30个案例分析,内容很全面,更重要的是很清晰 相关下载链接:[url=//download.csdn.net/download/xcsmdc/5124499?utm_source=bbsseo]//download.csdn.net/download/xcsmdc/5124499?utm_source=bbsseo[/url]
相关热词 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法 c# gmail 发邮件 c# 多层文件
我们是很有底线的