C#调用C++的dll存在的问题】的更多相关文章

调用Interop.zkemkeeper.dll无法使用 已经注册dll成功但是还是报错 检索 COM 类工厂中 CLSID 为 {00853A19-BD51-419B--2DABE57EB61F} 的组件时失败,原因是出现以下错误: . private CZKEMClass mechineRoom = new CZKEMClass();实例一下就报错 ------解决方法-------------------- 下面链接提到了一个解决方法,把SDK文件夹中的所有的dll文件复制到SysWOW6…
c# 调用C++的dll报错 Attempted to read or write protected memory:   原因是:c# 传递Null的string值导致的,将Null改为string.empty即可…
最近开始搞毕设了,打算用自己拿手的js来搞,但是仿佛入坑了,Node还不是很熟.总之,兵来将挡,水来土掩嘛,带着问题学习才是最高效的. 折腾1:Node 调用 C++ 刚开始,虽然我老师把dll文件给我了,但是我一直以为是用Node调用C++,然后一直在折腾怎么编写addon,怎么将C++编译然后用Node调用,未果...T_T,还差点在stackoverflow上提问了.. 中途遇到个传参的问题,还搜了好多资料,解决方案:v8 string to char* 但是,再怎么说,也折腾过了,对照着…
最近使用golang调用c++的dll库文件,简单了解了一下,特作此笔记:一.DLL 的编制与具体的编程语言及编译器无关 dll分com的dll和动态dll,Com组件dll:不管是何种语言写的都可以调用,但com分很多种.比如而php只能调用com的dll的特定的几种.不能直接调用动态dll,要使用第三方的dll文件dynwrap.dll或者编译PHP扩展来迂回调用动态dll:只要遵循约定的 DLL 接口规范和调用方式,用各种语言编写的 DLL 都可以相互调用.譬如 Windows 提供的系统…
注: DLL:表示链接库,包含dll,lib文件: dll: 表示my.dll文件 lib: 表示my.lib文件 C++ 调用.lib的方法: 一: 隐式的加载时链接,有三种方法 1  设置工程的 Projects来加载DLL的lib文件 打开工程的 Projects菜单,然后在Linker/Additional Library Directories中加入lib文件所在的路径,在Input/Additional Dependencies加入lib文件名称,如(my.lib) ,然后在要使用该…
paip.java c# .net  php python调用c++ c dll so windows api 总结 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax java  jna 反观.NET阵营,其P/Invoke技术调用原生函数非常方便,不需要编写一行C代码,只需要写Annotation就可以快速调用原生函数.因此,与硬件有关的很多开发领域都被.NET所占据 在P…
解析__cdecl,__fastcall, __stdcall 的不同:在函数调用过程中,会使用堆栈,这三个表示不同的堆栈调用方式和释放方式. 比如说__cdecl,它是标准的c方法的堆栈调用方式,就是在函数调用时的参数压入堆栈是与函数的声明顺序相反的,其它两个可以看MSDN,不过这个对我们编程没有太大的作用 --------------------------------------------------------------- 调用约定 调用约定(Calling convention)决…
在一些特定要求下,我们的C#可能需要制作dll给LabView进行调用,并且我们不能够保证C#的程序是完全自己写而不调用第三方的dll库.很多时候我们需要使用诸如Sqlite.Net.AForge.Net之类的开源库,此时我们发现我们需要使用混合模式去兼容这些由.NET 2.0版本运行时开发的开源库. 一.C#中的混合模式 如果是C#应用程序,那么我们只要在工程对应项目中添加"应用程序配置文件"也就是app.config文件: 然后在里面填入如下信息进行编译即可: <?xml v…
前段时间公司做了个winform程序,需要调用c 的dll去读取卡号的程序,期间遇到些问题,下面来分享下 一.dll路径问题 相信很多开发者都会遇到这个问题,我总结了下我现在有3总方式去解决这个问题: 1.直接放在bin下面,跟exe文件在同一文件夹下, ps:调试代码的时候,如果是debug模式的话,就放bin/debug下,同理release 模式就放bin/debug下:如果这种方式不行的话,就试试第二种方式. 2.放在C:\Windows\System32下: 3.如果以上方式都不行的话…
//C#调用C++的DLL搜集整理的所有数据类型转换方式,可能会有重复或者多种方案,自己多测试 //c++:HANDLE(void *) ---- c#:System.IntPtr //c++:Byte(unsigned char) ---- c#:System.Byte //c++:SHORT(short) ---- c#:System.Int16 //c++:WORD(unsigned short) ---- c#:System.UInt16 //c++:INT(int) ---- c#:S…
/C++中的DLL函数原型为        //extern "C" __declspec(dllexport) bool 方法名一(const char* 变量名1, unsigned char* 变量名2)        //extern "C" __declspec(dllexport) bool 方法名二(const unsigned char* 变量名1, char* 变量名2) //C#调用C++的DLL搜集整理的所有数据类型转换方式,可能会有重复或者多…
把C#编译成DLL或者Axtive控件,再由C调用!比如使用C++调用C#的DLL. SwfDotNet是.net下输出flash的类库.SwfDotNet是C#编写的,作者的C#水平,真是令我佩服.这是个特别好的读写Swf文件的库.但是,我要用在C++项目中,怎么让C++调用C#的DLL呢.今天一上午都在琢磨这个问题,耽误了很多时间,原因是编译是出现:warning C4819: 该文件包含不能在当前代码页(936)中表示的字符.请将该文件保存为 Unicode 格式以防止数据丢失. 接着就是…
写操作之前,还是扼要的说一下托管与非托管C++的区别好了,其实我也并没有深入了解过托管C++的特点所在,其最大的特征就是可以由系统来调试回收相关的代码资源,跟C#的特性一样,只是编程风格跟C++类似而已,因此,这决定了C#与托管C++是可以完美结合在一起的.托管C++生成的dll跟C#生成的dll应该说是没区别的,之所以产生托管C++这种怪物,完全是因为微软在极力推崇C#,必须要兼顾不同语言间交互. 好吧,接下来正经的写一下过程.先摆出目的:我手上有一个C++写的类(NativeClass),想…
链接地址:http://www.cnblogs.com/yinhaiming/articles/1712463.html .net产生的比java晚,其类库的封装在某些方面也比java更优秀,更全面.比如最近在做一个OJ,看到网上的一些做法是用 java+c++,C++用作所提交程序的测试.c++虽然好,但是他的编写比较复杂.因此,我选择的是C#,用.net的类库可以很方便的获得一个进程 (用户提交的程序)运行的时间和消耗的内存.下面是我的测试程序: 首先我在网上查了一些资料: C# metho…
C#中调用c++的dll具体创建与调用步骤,亲测有效~   使用的工具是VS2010哦~其他工具暂时还没试过 我新建的工程名是my21dll,所以会生成2个同名文件.接下来需要改动的只有画横线的部分 下面是my21dll.h里面的... 下面的1是自动生成的不用动,或者也可以不要,因为只是一个宏而已下面可以做相应修改. 下面的2是自动生成的类,我没用就注释掉了 下面的3是自动生成的一个测试函数,原来函数最前面是extern,记住精髓是要改成EXTERN_C  下面的4是我自己写的一个测试函数,用…
源:JAVA判断32位还是64位,调用不同的DLL 通过获取sun.arch.data.model可判断是32还是64的JAVA 将32或者64位的DLL放不同的目录,实现自适应调用DLL Properties props = System.getProperties(); String bits=String.valueOf(props.get("sun.arch.data.model")); String path = IMyNative.class.getResource(&qu…
之前公司有套C# AES加解密方案,但是方案加密用的是Rijndael类,而非AES的四种模式(ECB.CBC.CFB.OFB,这四种用的是RijndaelManaged类),Python下Crypto库AES也只有这四种模式,进而Python下无法实现C# AES Rijndael类加密效果了. 类似于这种C# 能实现的功能而在Python下实现不了的,搜集资料有两种解决方案,第一种方式,使用IronPython 直接调用C# dll文件,教程网上很多,不在赘述了,这种方式有个缺点,用的是ir…
FSharp 调用 Oracle.ManagedDataAccess.dll 1.Oracle.ManagedDataAccess.dll 的下载地址.好像如今必需要注冊才干下载. 即使是 64 位系统,也要注冊 32 位版本号: 2.还须要引用 System.Data.System.Transaction.System.Xml. 程序中的数据库是 Oracle Database 11g Express Edition. #if INTERACTIVE #r@"C:\oracle\odp.net…
原始链接 https://www.cnblogs.com/Charltsing/p/DllExport.html 这两年,我在VBA应用方面一直有几大痛点:1.多音字转拼音:2.64位下的GZIP解压缩:3.数学公式计算:4.离线中文OCR识别(见二楼). 为了解决这几个个长期困扰我的问题,以及未来经常会遇到的其它问题(例如AES加解密.验证码图片处理.文本编解码.大数的数学运算.多线程等等),我考虑在VBA中调用C#的dll来彻底解决. 正常情况下,vba调用C#的dll要通过com方式先注册…
最近在对接C++程序的时候碰到了一些问题,然后花了一段时间才解决,今天就这些小问题来做一个总结,很多时候由于对另外一种开发语言的不熟悉,会在使用的过程中遇到很多的问题,这些问题看似简单但是背后却有很多的东西需要去总结的,下面就最近遇到的两个调用C++ API的示例来做一个总结. 1 首先我们看看如果有下面的一些C++的接口,我们怎样来进行对接. typedef unsigned long KEIO_LONG; typedef char KEIO_BYTE; typedef void * KEIO…
最近做在Windows XP X64,VS2005环境下做32位程序编译为64位程序的工作,遇到了一些64位编程中可能遇到的问题:如内联汇编(解决方法改为C/C++代码),long类型的变化,最关键的遇到了64位进程需要调用32位dll的问题.由于有一些32位dll没有源代码,无法重新编译为64位dll,所以只能想办法解决64位进程调用32位dll问题,这个问题让我很是挠头了几天. 相关资料:微软公司的官方网站针对这个问题描述如下:在64位的windows系统中,一个64位进程不能加载一个32位…
之前从来没搞过C++,最近被安排的任务需要调用C++的接口,对于一个没用过 Dependency 的小白来说,原本以为像平时的Http接口那样,协议,端口一定义,方法参数一写就没事,结果踩了无数的坑.现在从0基础开始记录.A发了一个SDK文件夹过来,先不管cpp.h.lib五花八门的后缀文件,直接看文档说明,表明需要调哪些方法.网上简单的查阅下资料,发现直接引用动态库Dll 的方式是通过 DllImport去实现,命名空间为 using System.Runtime.InteropService…
今天上午测试 vb 与 c(dll) 之间交互,传递参数的时候,没遇到什么太大的问题. 下午在asp中调用vb(activex dll)时, 在asp代码中传参数到 vb(dll)中时,遇到问题了. 上午写 vb 与 c(dll)的时候,vb 传参数到c(dll)的时候,默认就传引用, 除非在vb中显示的使用 byval. 下午写 asp 与 vb(dll)的时候,asp传参数到 vb(dll)的时候,默认传值,而我需要按引用传过去. 在 vb(dll)中,我显示的申请参数的类型: byref…
64位进程调用32位dll的解决方法   最近做在Windows XP X64,VS2005环境下做32位程序编译为64位程序的工作,遇到了一些64位编程中可能遇到的问题:如内联汇编(解决方法改为C/C++代码),long类型的变化,最关键的遇到了64位进程需要调用32位dll的问题.由于有一些32位dll没有源代码,无法重新编译为64位dll,所以只能想办法解决64位进程调用32位dll问题,这个问题让我很是挠头了几天. 相关资料:微软公司的官方网站针对这个问题描述如下:在64位的window…
 综述 : 本文章介绍.Net 环境下C# 通过托管C++调用本地C++ Dll文件, 示例环境为:VS2010, .Net4.0, Win7. 具体事例为测试C++, C#, 及C#调用本地C++Dll文件进行浮点运算效率的一部分. 如果需要查看三者的效率, 请继续阅读下面的文章. a 创建本地CPP类库 1. 创建本地CPP的Dll ---->EfficiencyNativeCPPDLL 2. 点击下一步 注意选择为DLL(D)项, 然后选择完成. 3.书写DLL文件 3.1 Efficie…
C#调用Delphi接口方法,有两种解决办法: 一.将Delphi程序编译成一个COM组件,然后在C#里引用COM组件. 二.非托管调用Dephi的DLL文件. 这里我们主要讲解一下第二种方法,讲第二种方法之前首先讲解下DllImport. DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息. DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称.     DllImpor…
以C#开发周立功CAN举例,在官网下载了周立功的demo 一.C++头文件样子 //接口卡类型定义#define VCI_PCI5121 1 //一些结构体定义 typedef struct tagRemoteClient{ int iIndex; DWORD port; HANDLE hClient; char szip[32];}REMOTE_CLIENT; //用到的核心调用CAN函数 #define EXTERNC extern "C" EXTERNC DWORD __stdc…
/C++中的DLL函数原型为        //extern "C" __declspec(dllexport) bool 方法名一(const char* 变量名1, unsigned char* 变量名2)        //extern "C" __declspec(dllexport) bool 方法名二(const unsigned char* 变量名1, char* 变量名2) //C#调用C++的DLL搜集整理的所有数据类型转换方式,可能会有重复或者多…
Python调用windows下DLL详解 - ctypes库的使用 2014年09月05日 16:05:44 阅读数:6942 在python中某些时候需要C做效率上的补充,在实际应用中,需要做部分数据的交互.使用python中的ctypes模块可以很方便的调用windows的dll(也包括linux下的so等文件),下面将详细的讲解这个模块(以windows平台为例子),当然我假设你们已经对windows下怎么写一个DLL是没有问题的.  引入ctypes库 from ctypes impo…
DLL 文件编写方法: 1.建立DLL工程 2.声明.定义要导出的函数 BOOL WINAPI InitDlg( HWND hTabctrl,TShareMem* pTshare,CRect* prc);//WINAPI 标准调用约定 void WINAPI EndDlg(); DWORD WINAPI ShowDlg(int nDlgNum); 实现部分省略,需要注意的是,在函数开头第一句需要加上: AFX_MANAGE_STATE(AfxGetStaticModuleState()); 3.…