使用clr 调用C#编写的dll中的方法的全解释1.数据库初始化:将下面这段代码直接在运行就可以初始化数据库了exec sp_configure 'show advanced options', '1';goreconfigure;goexec sp_configure 'clr enabled', '1'goreconfigure;exec sp_configure 'show advanced options', '1'; go ALTER DATABASE DB_Name set TRUS…
C#动态调用C++编写的DLL函数 动态加载DLL需要使用Windows API函数:LoadLibrary.GetProcAddress以及FreeLibrary.我们可以使用DllImport在C#中使用这三个函数. [DllImport("Kernel32")] public static extern int GetProcAddress(int handle, String funcname); [DllImport("Kernel32")] public…
    C#调用C++编写的DLL函数, 以及各种类型的参数传递 1. 如果函数只有传入参数,比如: C/C++ Code Copy Code To Clipboard //C++中的输出函数 int __declspec(dllexport) test(const int N) { return N+10; } 对应的C#代码为: C# Code Copy Code To Clipboard [DllImport("test.dll", EntryPoint = "#1&q…
最近接到一个离职员工的任务,一个搭好框架的ERP系统,看了两天,说一下看到的东西,整个项目目录中我没发现一个.aspx后缀的文件,全是静态HTML文件,之后发现他用的jquery简直看的头疼,不过大概能看懂,发现一个可能大家会感兴趣的东西,他在静态界面中通过js对象就直接调DLL中的方法从数据库中得到数据并通过js加载出来,当时我就瞎了,他的大概过程是: 建立了多个js对象(数据库中一张表对应一个),并为这个对象添加了很多与DLL中对应的方法,比如DLL中有一个对用户表修改用户密码的操作,那他j…
发现个delphi调用vc写的Dll中包括pchar參数奇怪现象 procedure中的第一行语句不能直接调用DLL的函数,否则会执行报错,在之前随意加上条语句就不报错了奇怪! vc的DLL源代码地址 http://blog.csdn.net/lqena/article/details/46357165 Delphi源代码例如以下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphic…
客户端调用wcf ,有时需要动态的调用服务端的WCF中的方法,本方法,反射wcf 的接口,动态调用接口中的方法. 主要为,动态绑定,反射动态调用. public static object ExecuteMethod<T>(string pUrl,string pMethodName, params object[] pParams)   {       EndpointAddress address = new EndpointAddress(pUrl);       Binding bin…
1.注意事项:在编写C#DLL类库时,最好不要出现相同的命名空间,否则在C++中调用可能会出现编译错误.2.将C#的源码生成的“dll”文件复制到C++项目中的Debug目录下3.将C++项目属性设置为公共语言运行时支持4.在项目中导入dll文件和引用命名空间 #using "../debug/xxx.dll" using namespace xxxx; 5.实例化C#对象:CL ^cl = gcnew CL(); 6.调用C#带out string[] 参数的方法:intPowerO…
这个问题缠了我2个小时才弄出来,其实很简单.当对方提供一个dll给你使用时,你需要去了解这个dll 是由什么语言写的,怎么编译的,看它的编译类型.这样即使在没有头绪时,你可以先尝使用一些比较热门的编译工具去解析它.比如gcc,reflector,ILSpy 都行. 关于C++写出来的dll,理论上也是一个dll,但更准确定义应该称为是一个特殊的dll.普通的dll,比如NOPI.DLL,我们只需要在项目中去引用它再加个namespace就可以去使用它内部提供的方法.而c++编译出来的dll 则需…
http://bbs.csdn.net/topics/380045353 用DelphiXE在WIN2008下编写一个访问WebServices的DLL ws.dll,只有一个输出函数,如下: function Login(URL:PAnsiChar; UserName: PAnsiChar; UserPass: PAnsiChar; LocalLogin: Boolean):PAnsiChar;var   tStr:String;begin try            Result := P…
最近有一项目: 一超市管理系统单机版,运行在WIN2003+SQL2005上,每天超市关门都都会关电脑,现客户要新加功能,每天关门下班后回家可以上网查看超市管理系统的数据库里的相关数据,然后再做一些原系统没有的统计分析等,老系统不能做大改动,像升级到WIN2012+SQL2012等这些操作,改动越小越好. 现在的想法是:阿里云买台服务器,装上SQL,然后建立的数据库和超市管理系统上的数据库一毛一样,然后想办法,当超市管理系统数据库里的增表增删改的时候,同步阿里云服务器上的数据库保持数据一致, 然…
介绍 给大家介绍一个最新的访问本机代码的 Java 框架 —JNA . JNA(Java Native Access) 框架是一个开源的 Java 框架,是 SUN 公司主导开发的,建立在经典的 JNI 的基础之上的一个框架. JNA 项目地址: https://jna.dev.java.net/ 非常强大.易用,功能上类似与 .NET 的 P/Invoke . 不堪回首的 JNI 我们知道,使用 JNI 调用 .dll/.so 共享类库是非常非常麻烦和痛苦的. 如果有一个现有的 .dll/.s…
界面还是C#写的方便点,主要是有一个可视化的编辑器,不想画太多的时间在界面上.但是自己又对C++了解的多一些,所以在需要一个良好的界面的情况下,使用C++来写代码逻辑,将其编译成一个dll,然后用C#写界面, 1.C++编写的dll代码如下: extern "C" __declspec(dllexport) int testAdd(int a,int b) { return a+b; } //一个简单测试字符类型的例子 extern "C" __declspec(d…
1.打开VS新建项目 2.在新建项目窗口中选择其他语言->Visual C++->Win 32控制台应用程序,设置名称:MathCon,设置解决方案名:MathCon,这个名字随便你自己取 3.单击确定,在出现的Win32 应用程序向导的概述对话框中点击下一步. 4.在应用程序设置中,选择应用程序类型下的控制台应用程序,勾选附加选项下的”预编译头“ 5.单击完成创建项目 6.将C#编写的DLL文件放置在C++的可执行程序目录 7.使用#using引用C#编写的DLL文件MathDLL.dll,…
近来,因工作需要,必须解决Delphi写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行:    编写C#dll的方法都一样,首先在vs2005中创建一个“类库”项目TestDll,using System.Runtime.InteropServices;namespace TestDll{     public   interface  I TestClass    {       void YourProcedure(stirng param1);…
在c# 中编写com组件,供PB调用实例 前言:c#中写的dll直接是不能被pb调用的,只有写成com组件才可以调用,所以用c#写dll时要注意. c#中新建类库 类库类型为通用类库,项目名为AddCom 1.配置:右键点击解决方案资源管理器中的AddCom,选择“属性”,选择“应用程序”->“程序集信息”,勾选“使程序集COM可见”,然后点击“生成”,选择“为COM互操作注册” 2.打开AssemblyInfo.cs文件,设置[assembly: ComVisible(true)],如果不改则…
技术实现 如何逐步实现动态库的加载,类型的匹配,动态链接库函数导出的定义,参考下面宏定义即可: #define LIBEXPORT_API extern "C" __declspec(dllexport) 第一步,我先从简单的调用出发,定义了一个简单的函数,该函数仅仅实现一个整数加法求和: LIBEXPORT_API int mySum(int a,int b){ return a+b;} C# 导入定义: public class RefComm { [DllImport("…
新建C#类库,编译. 引用 using Microsoft.SqlServer.Server; 方法 [SqlFunction]public static int GenerateTxt(){ ......} 修改数据库配置 ---修改配置exec sp_configure 'clr enabled', 1;reconfigure; 根据dll路径注册程序集 --从dll中抽取中间语言(IL)USE erp303_szzb_szpaCREATE ASSEMBLY CustomerInfoInte…
C#以其简单易用,功能强大深受大家喜爱.PowerBuilder作为C/S的MIS开发工具,十分简单灵活,开发时间短,开发及维护成本低,一直是中小企业信息管理系统的首选开发工具.但是PB的局限性限制了它进一步的发展,这个就不多说了,玩PB的朋友都清楚.PB如何调用C#写的DLL,这个兴趣一上来,就忍不住要解决它.经过多方查找资料加上自己写代码测试,算是解决这个难题.下面列出开发步骤及各种设置选项(开发工具VS2008SP1+PB9.0-8836) 首先我们打开VS2008,新建一个项目,如图 接…
如果Dll中有某个类的方法返回dynamic实例,并且dynamic对象实际实例为匿名类类型,则Dll的外部使用者可能最终无法正常使用此dynamic对象.当使用此dynamic对象时,可能会遇到x属性没有在object中定义的错误,此错误属于Microsoft.CSharp.RuntimeBinder.RuntimeBinderException实例——即使Debug时,能够看到返回的对象实例确实含有x属性. 这很诡异,返回匿名类,并用dynamic进行标示是节省代码量的利器.但在此处,运行时…
一.问题的起源 最近在做vue.js项目时,遇到了vuex状态管理action与vue.js方法互相通信.互操作的问题.场景如下图所示: 二.第一种解决方法 例如,我们在页面初始化的时候,需要从服务端通过API接口获取数据,数据获取成功前需要显示Loading状态框,数据获取完成后,需要将Loading状态框隐藏. 这是一种相对比较简单的应用场景,解决起来当然也比较简单. 我们可以通过state数据字段来实现,在state中存储一个loading字段,并设置默认值为false. const st…
先说出错原因:    堆栈调用顺序  解决办法:     使用   __stdcall 或 使用C#属性 CallingConvention 起因是我想在c#中调用c函数结果出错了 如下 C 头文件 #define DLLExport extern "C" __declspec(dllexport) DLLExport int func(int a, int b); DLLExport void init(); C# [DllImport("func.dll")]…
自己比较懒,有的时候想写点东西,但由于文笔不行.技术不行也就没有怎么写.经常是用到什么.学习什么的时候,简单写点,权当是个学习笔记.上博客的次数也很少,有人给我留言也是没有怎么及时的回复,深感抱歉! 在一些特殊的行业,比如我从事的GIS.地质行业,大部分软件还是以C/S形式存在,软件大多是产品来销售.这些程序大部分是Cpp语言来编写,一方面是考虑到效率问题,另一方面可能是因为历史原因,创建者使用Cpp,后面接班人也就继续使用. 但是使用Cpp去做项目的时候,又会倍感cpp的笨拙,做个界面非常费劲…
转自:http://blog.csdn.net/life_is_too_hard/article/details/52137271 c和c++不能直接相互调用,主要是因为c++有重载函数的功能,为了区分重载函数,编译器会在函数名上加上一些修饰用符号,而c不这么做.为了让c与c++的程序能够相互调用对方的库,就有了extern “C”.注意,extern “C” 是c++的规范,所以只能出现在c++的代码里面,加在函数声明前,表示函数是用c的规范. 1.c代码调用c++dll 编译c++dll的要…
公司的业务需要,nodejs要读取文件版本号. 同事要求我用delphi编写dll,以供nodejs调用,结果通过json返回. delphi代码如下: function GetFileInfo(APath: PAnsiChar): PAnsiChar; var sPath: string; FInfoSize, Temp, Len: Cardinal; InfoBuf: Pointer; TranslationLength: Cardinal; TranslationTable: Pointe…
//加载程序集(dll文件地址),使用Assembly类 Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "Bin/XX.Common.dll"); //获取类型,参数(命名空间.类名) Type type = assembly.GetType("XX.Common.Utility"); //创建该对象的实例,object类型,参数(命名空间.类名) obje…
我用vs2008建的C++ dll类库,名字test_interopVC,和C#的CeshiVC项目 一:C++项目dll类库: 1.test_interopVC.h,主要简单的测试,所以就在一个类里直接定义了一个常量a=9: #pragma once using namespace System; using namespace System::Runtime::InteropServices; #include<stdlib.h> #include<memory.h> name…
1. 如果函数只有传入参数,比如: C/C++ Code Copy Code To Clipboard //C++中的输出函数 int__declspec(dllexport) test(constint N) { return N+10; } 对应的C#代码为: C# Code Copy Code To Clipboard [DllImport("test.dll", EntryPoint = "#1")] publicstaticexternint test(i…
反射的作用是动态的加载某个dll(程序集),并执行该程序集中的某个方法,并返回结果:当然也可以给该方法传递参数 namespace assembly_name { public class assembly_class { public string Show_Str(string str) { if (string.IsNullOrEmpty(str)) return "你没有传参数进来"; else return "有参数,参数是:" + str; } } }…
using Quartz; using Quartz.Impl; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading; using System.Threading.Tasks; namespace QuartZ { class Program { static void Main(…
最近在用QT调用VC生成的库,QT使用的是MinGW调试器,出现与动态库不兼容的问题,最后发现QT只能识别VC生成的C格式下的动态库 也就是在导入导出设置时加入extern "C" .如extern "C" __declspec(dllexport),不能兼容类库.QT调用动态库时的步骤如图:1.将生成的这3个文件加入QT工程的目录下. 2.点击添加文件和添加外部库,如图   最后 include 头文件就可以使用了. 最后提醒大家:注意区分64 位和32位 以免不…