在.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(UnmanagedType.LPStr)]
public static extern String GetMyNickName( [MarshalAs UnmanagedType.LPStr)] String aName ); 

Unicode类型:

[DllImport("my.dll")]
[return: MarshalAs(UnmanagedType.LPWStr)]
public static extern String GetMyNickName( [MarshalAs(UnmanagedType.LPWStr)] String aName ); 

调用实例:

string myName;
string nickName; myName = "Eric Tony";
nickName = GetMyNicName(myName); 
时间: 2024-08-24 21:56:04

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

Native Application 开发详解(直接在程序中调用 ntdll.dll 中的 Native API,有内存小、速度快、安全、API丰富等8大优点)

文章目录:                   1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Application 有何妙用: 5. MJ0011 关于 Native Application 的文章整理: 6. 互联网上其他关于 Native Application 的文章整理: 7. 小结: 1. 引子: 其实在好久以前就看了 MJ0011 翻译的那个<Native 应用程序详细>系列的文

SOE 中调用第三方dll

一.简介 在利用soe实现server的扩展的时候,有些时候,需要调用第三方的dll库.官网中给出了明确的说明,soe中是可以添加第三方的dll文件,但是一直没有测试.按照官方的步骤应该是一个非常的简单的步骤.官方的步骤,参考连接如下:点击我 但是在实际测试的过程中发现并不如官方的步骤如此简单.其中涉及一个非常重要的东西,就是强签名. 二.强签名密钥 在新建soe模板工程后,可以在工程目录下看到一个名为myKey.snk 文件.snk一言以蔽之,为了防止自己的应用程序被篡改,就是给自己的应用程序

Java中调用Delphi编写的DLL

有些时候,要写一些程序,在 JAVA 里面好难实现, 但如果使用其它编程语言却又比较容易时,我们不妨通过 JNI 来让不同语言的程序共同完成. JNI 的教程, 网上 C 的比较多,Java 也提供了 javah.exe 为 C 语言的 JNI 程序生成头文件, 如果你是一个 Delphi 编程员, 能否让 JAVA 与 Delphi 程序交互呢? 答案是肯定的,今天我们就来看一下一个简单的例子. Helloworld. 主要是来认识一下, JAVA 怎样调用 Delphi 程序的方法. 好的,

利用vs2010制作C语言 dll文件,并在其它程序中调用该dll文件

一.为什么需要dll 代码复用是提高软件开发 效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架, 如ATL.MFC等,它们都以源代码的形式发布.由于这种复用是“源码级别”的,源代码完全暴露给了程序员,因而称之为“白盒复用”.“白盒复用”的缺点 比较多,总结起来有4点. 暴露了源代码: 容易与程序员的“普通”代码发生命名冲突: 多份拷贝,造成存储浪费: 更新功能模块比较困难. 实际上,以上4点概括起来就是

在SQL Server 2008中调用.net,dll

T-SQL的在执行普通的查询的时候是很高效的,但是在执行循环,判断这样的语句的时候效率就不那么的高了.这时可以借助CLR了,我们可以在SQL Server 2008中扩展C#程序来完成循环等过程式的查询,或者其他SQL不便实现的功能.这个随笔中将介绍在SQL Server中扩展C#程序实现正则表达式的替换功能. 新建一个类库程序命名为Regex,打开Visual Studio 2008,点击File,点击New,点击Project,在弹出的New Project对话框中选择Class Libra

C#中调用user32.dll库的keybd_Event函数,操作键盘

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

关于在VB.NET中调用使用VC++编写的类库dll的一点笔记

前言 结对作业要求一出来,我就立刻想到了把“计算核心”封装成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,并在C#中调用

一.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

JNI java调用动态链接库dll

现在做的项目中就用到了JNI调用c语言实现的访问设备的dll文件,在此之前对JNI是一窍不通哈,只听说过JNA链接dll,但只是一个了解. JNI(Java Native Interface)Java本地接口,主要作用是实现java代码与C C++编写的代码交互. 理论不多说,还是看java链接dll具体操作吧..如下: 以下实例为java中调用connection.dll文件中的 open()方法. 1,java方 1)装载dll文件 有两种方式System.load();和System.lo