在.net中调用Delphi dll的Pchar转换】的更多相关文章

Pchar是非托管代码,要在.net中调用Delphi dll中的功能,请使用MarshalAs属性告知.net调用PInvoke去转换.net中标准的string类型.如果Delphi dll是Delphi2007以前的版本编译的,则Pchar是Ansi类型:如果Delphi dll是Delphi2009以后的版本编译的,则Pchar是Unicode类型.请看以下实例. Ansi类型: [DllImport("my.dll")] [return: MarshalAs(Unmanage…
1,问题描述 最近发现vb6调用delphi DLL中的函数并返回字符串时出现问题,有时正常,有时出现?号,有时干脆导致VB程序退出 -- :: 将金额数字转化为可读的语音文字:1转化为1元 ????@ 元 ???? og\SS_log.txt .eP K : 2,原因分析 delphi中函数声明如下: function ss_ConvertMoney2Str(mmje:double): PChar; stdcall; VB6中对应的函数声明如下: Public Declare Function…
文章目录:                   1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Application 有何妙用: 5. MJ0011 关于 Native Application 的文章整理: 6. 互联网上其他关于 Native Application 的文章整理: 7. 小结: 1. 引子: 其实在好久以前就看了 MJ0011 翻译的那个<Native 应用程序详细>系列的文…
原文:在SQL Server 2008中调用.net,dll T-SQL的在执行普通的查询的时候是很高效的,但是在执行循环,判断这样的语句的时候效率就不那么的高了.这时可以借助CLR了,我们可以在SQL Server 2008中扩展C#程序来完成循环等过程式的查询,或者其他SQL不便实现的功能.这个随笔中将介绍在SQL Server中扩展C#程序实现正则表达式的替换功能. 新建一个类库程序命名为Regex,打开Visual Studio 2008,点击File,点击New,点击Project,在…
一.简介 在利用soe实现server的扩展的时候,有些时候,需要调用第三方的dll库.官网中给出了明确的说明,soe中是可以添加第三方的dll文件,但是一直没有测试.按照官方的步骤应该是一个非常的简单的步骤.官方的步骤,参考连接如下:点击我 但是在实际测试的过程中发现并不如官方的步骤如此简单.其中涉及一个非常重要的东西,就是强签名. 二.强签名密钥 在新建soe模板工程后,可以在工程目录下看到一个名为myKey.snk 文件.snk一言以蔽之,为了防止自己的应用程序被篡改,就是给自己的应用程序…
delphi dll 源码: library dllres; type char10 = ..] of char; TMydata = packed record id: Integer; name: char10; married: Boolean; salary: Double; end; PMydata = ^TMydata; const RESSTR: ..] of string = ('HELLO', 'COLOR', 'DELPHI', 'shared', 'library'); N…
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; // for Process using System.Runtime.Inte…
新写了一个 Delphi 的 dll 供 C# 程序调用,却发现在使用 Visual Studio 2012 进行调试时,程序会在调用后自动退出. 经过对比,只需要将工程属性中“调试”一页下的“启用 Visual Studio 承载进程" 选项不勾选,即可解决此问题.…
前因后果 调用一门锁的dll实现读取酒店IC卡数据,直接用Readme里的方法出错. 函数声明: 一.读卡函数    ************************ Delphi 调用 *************************    * function DLL_Read:PChar;                external 'AnLock_2012.dll'; stdcall;    *********************************************…
别的没什么,是一定可以调用成功的.但是意外的是,ShowMessage函数在DLL里也可以轻易被调用.此外,Delphi里的var 相当于VC里的引用,需要在函数原型里正确标识,否则传递普通变量甚至常量是不行的. VC++代码: // callDLL.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "windows.h" int ma…
近日一个java的项目,客户要求项目中必须使用其提供的加密机制,扔给了两个.net写的DLL.网络上搜了一圈也没找到啥东西,甚至看到人扬言此事绝无可能.郁闷当中考虑了一个思路.用C#做一个Com,调用客户提供的DLL实现加密解密的方法,然后提供给java使用.经过一番捣腾,最后证实可行.   环境与工具:   1..net framework 3.5 C#   2.java jdk1.5, Tomcat 5.5   3.jacob-1.15-M3   实现例子:   一.C# 制作Com组件  …
首先请参考官方的文档 http://digital.ni.com/public.nsf/websearch/70995EC2CA1B523386256DD4004F3DE6?OpenDocument 但是虽然该文档题目为"Calling a LabVIEW DLL from a LabWindows™/CVI or Other C/C++ project",但是实际上只讲了在VS2008中进行调用的情况. 在CVI中的调用与VS2008中还是有很大区别的. 下面就讲一下我自己的方法吧.…
msvcr100.dll是VS2010的C运行时库DLL, _beginthreadex开启子线程的函数就在这个DLL里面实现 unsigned long _beginthreadex(    void *security, //安全属性    unsigned stack_size, //线程栈大小    unsigned ( __stdcall *start_address )( void * ), //线程函数    void *arglist, //线程函数的参数 */    unsig…
//----------------------Delphi------------------- procedure GetSqlData(ASource: PChar; ADest: PChar; ADestSize: Integer); stdcall; var  S: string; begin  if ASource = nil then Exit;  S := Format('%s 路过!',[ASource]);  Move(S[1], ADest^, Min(ADestSize,…
keybd_event()的函数原型是: void keybd_event( byte bVk,          //虚拟键码 byte bScan,       //该键的硬件扫描码 dword dwFlags   //函数操作的各个方面的一个标志位集 dword dwExtraInfo  //与击键相关的附加的32位值 ); 其中第三个参数有三种取值: · 0:按下 · 1:扩展键 · 2:弹起 keybd_event(0x41, 0x1e, 0x0000, 0); // 按下 a key…
前言 结对作业要求一出来,我就立刻想到了把“计算核心”封装成dll,然后使用vb.net编写UI调用dll的思路.然而在实现过程中却遇到了很多的问题. 我在这个过程中是负责使用vb.net编写UI并调用编写好的DLL进行计算的. 目标 使用c++把类封装到dll,并在vb.net中调用该dll,使用该dll中封装好的类.在查找资料的过程中,发现vb.net调用dll的方法主要有两种. (IDE:Visual Studio 2013 professional) 方法一:使用Declare语句 vb…
一.C#封装成DLL 1.在VS中创建项目选择类库,命名 myDll 2.建立好项目后自动生成的代码如下: 代码修改如下,添加自己要封装的C#代码,注意修饰符必须为public using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace myDLL { public class Class1 { //封装的DLL函数 public int add(int x, in…
创建类库 选择"文件"->新建->项目->Visual C# ->类库,输入名称,选择位置,单击确定 浏览解决方案资源管理器,可以看到两个C#类,第一个是AssemblyInfo.cs,第二个是Class1.cs, 双击Class1.cs,你会看到一个GameClient命名空间(注意,我使用的项目名称为GameClient,因此自动生成命名空间为GameClient,根据你设置的项目名,这里的命名空间名字会不一样),客户端程序可以通过引用这个命名空间而使用这个…
当对c++几种调用方式有了解以后我们可以试着写个c++动态连接库了,我们现在来写个简单的c++求和函数并把它封装成dll,供以后的c#调用 我们写dll的时候,个人认为,要写就要把dll写好,写标准,别的地方才能用得方便,接下来就带你们写个标准的dll 第一步,确定你要写哪些方法,根据这些方法我们创建一个头文件,我这边主要写个add(); 例子如下:head.h #ifdef api #else #define api extern "C" _declspec(dllimport) #…
首先来说说c++中的dll 核心的一些知识 比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作.可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用.在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序 EXE 文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费:另一个缺点是,在编写大的 EXE 程序时,在每次修改重建时都必须调整编译所有源代…
在sextante中单纯利用python或者调用sextante已有算法进行自定义开发,很多情况下速度不咋给力,同样的操作调用QGIS的C++插件比用sextante里的算法要快,有时候快的 还不止一些,特别是当调用saga的算法时,saga要先进行一堆的数据格式转换,大大减慢了运行速度.为此,针对复杂的操作,多数情况下我都选择用C++进行开发,然后再在sextante里面进行调用.其调用实质就是python对C++的调用,网上资料很多,在此仅展示我的做法. 首先新建一个dll,在dll里面新建…
代码用的是<cocos2d-x 3.0 在lua中调用自定义类>中的代码. 在上篇的基础上进行扩充. 写lua函数 local function process_packet(user_data) if user_data then user_data = tolua.cast(user_data, "user_data"); print (user_data:uid()); print (user_data:uname()); end end local ghall =…
转载:http://blog.csdn.net/welcome000yy/article/details/7905463 结合这篇博客:http://www.cnblogs.com/xumenger/p/4372289.html 再结合:http://blog.csdn.net/lailai186/article/details/8770487 不过这篇博客有很多讲解的不清楚,甚至有一些误解的地方,但是将这几篇篇文章结合起来,就可以互相弥补.互相补充,比如: 1. 这篇博客在介绍静态调用的时候,…
动态链接库是一个能够被应用程序和其它的DLL调用的过程和函数的集合体,它里面包含的是公共代码或资源.由于DLL代码使用了内存共享技术,在某些地方windows也给了DLL一些更高的权限,因而DLL中可以实现一些一般程序所不能实现的功能,如实现windows的HOOK.ISAPI等.同时,DLL还为不同语言间代码共享提供了一条方便的途径.因而DLL在编程时应用较为广泛,本文将介绍如何在 Delphi 中建立和使用DLL. 一.DLL 库内存共享机制 从使用效果看,DLL和unit 很像,它们都可以…
前一阵子,研究了一段时间的Win32Asm,研究到后来发现Win32的ASM实际上还是和C版的介绍的一样.甚至还封装了一个简版的类似VCL库结构框架的32ASM结构库,不过搞着搞着就没兴趣了,也没继续往下深入,唉!发现年龄越来越大,人也越来越懒. 休息了好长一阵子,在乱七八糟的东西乱弄一堆之后,总算发现了一个能有点用处的东西,于是就欣欣然跑来记录一下日志博客以为备份. 我们都知道在Delphi,VC等这类静态检测形的语言,如果要使用一个函数,必须要先申明一下此函数结构,然后调用的时候,编译器才会…
C#调用Delphi接口方法,有两种解决办法: 一.将Delphi程序编译成一个COM组件,然后在C#里引用COM组件. 二.非托管调用Dephi的DLL文件. 这里我们主要讲解一下第二种方法,讲第二种方法之前首先讲解下DllImport. DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息. DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称.     DllImpor…
http://blog.163.com/bxf_0011/blog/static/35420330200952075114318/ Delphi 动态链接库的动态和静态调用 为了让人能快速的理解 静态调用.动态调用,现在做一个函数封装在一个DLL中,然后在APPLICATION form里面调用这个函数,这个函数处理两个数的和.用代码和图片说话:代码如下 library Project1; { Important note about DLL memory management: ShareMe…
dll传递string实现方法 delphi中dll传递string的实现方法: dll项目uses第一个引用sharemem单元; 调用的项目uses第一个引用sharemem单元; 调用的单元uses第一个引用sharemem单元; ************************************************************** delphi中dll传递string的实现方法:dll项目uses第一个引用sharemem单元;调用的项目uses第一个引用share…
第一章 DLL简单介绍由于在目前的学习工作中,需要用到DLL文件,就学习了下,在这里作个总结.首先装简单介绍下DLL:1,减小可执行文件的大小DLL技术的产生有很大一部分原因是为了减小可执行文件的大小.当操作系统进入Windows时代后,其大小已经达到几十兆乃至几百兆.试想如果还是使用DOS时代的单执行文件体系的话一个可执行文件的大小可能将达到数十兆,这是大家都不能接受的.解决的方法就是采用动态链接技术将一个大的可执行文件分割成许多小的可执行程序.2,实现资源共享这里指的资源共享包括很多方面,最…
第一章  DLL简单介绍 由于在目前的学习工作中,需要用到DLL文件,就学习了下,在这里作个总结. 首先装简单介绍下DLL: 1,减小可执行文件的大小 DLL技术的产生有很大一部分原因是为了减小可执行文件的大小.当操作系统进入Windows时代后,其大小已经达到几十兆乃至几百兆.试想如果还是使用DOS时代的单执行文件体系的话一个可执行文件的大小可能将达到数十兆,这是大家都不能接受的.解决的方法就是采用动态链接技术将一个大的可执行文件分割成许多小的可执行程序. 2,实现资源共享 这里指的资源共享包…