Delphi的DLL中的声明的类型的问题

假如我在DLL中新定义了一个类,并且声明了 一个变量,那么我在加载这个DLL的程序中想要使用这个变量,需不需要重新将对应类型声明再在这个程序的源码文件中再声明一遍?
就是怎么能让DLL中定义的新的数据类型也在加载它的程序中使用?

dll

3个回答

看什么数据类型,一般可以定义对应的结构体。

xumenger
xumenger 是这样的,假如我在DLL中定义了一个类或着结构体,那么我的程序加载了这个DLL之后,能不能直接使用其中定义的类型,就像我正在unit1单元里面引入unit2单元就可以直接使用unit2中定义的类型那样的
接近 5 年之前 回复

是这样的,假如我在DLL中定义了一个类或着结构体,那么我的程序加载了这个DLL之后,能不能直接使用其中定义的类型,就像我正在unit1单元里面引入unit2单元就可以直接使用unit2中定义的类型那样的?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c#调用Delphi DLL pchar类型的转换

原Delphi格式:  function send_photocmd(pdata,prt:pchar;timeout:integer;var prtLen:integer):integer;stdcall;external 'JcxNetClient.dll'; 现改为C#方

发现个delphi调用vc写的Dll中包含pchar参数报错奇怪现象

发现个delphi调用vc写的Dll中包含pchar参数奇怪现象 procedure中的第一行语句不能直接调用DLL的函数,否则会运行错,在之前任意加上条语句就不报错了奇怪! vc的DLL源码地址 http://blog.csdn.net/lqena/article/details/46357165 Delphi源码如下: unit Unit1; interface use

一个DELPHI程序要调用DLL,而DLL中的函数名,参数个数,参数类型为不定

一个DELPHI程序要调用DLL,而DLL中的函数名,参数个数,参数类型为不定请求思路,一个DELPHI程序要调用DLL,而DLL中的函数名,参数个数,参数类型为不定,要调用的DLL中的函数名、参数个数、参数类型要可以在窗口中Edit中动态输入我的意思就是函数不能在程序中事先定义,因为一切都是不固定的,要根据手工输入的参数个数、参数类型来调用这个函数,有些函数是3个参数,有些函数是4个参数手工

用Delphi编写Dll心得

使用Delphi编写DLL心得1。每个函数体(包括exports和非exports函数)后面加 stdcall;, 以编写出通用的dll2。exports函数后面必须加export;(放在stdcall;前面)3。对于非exports函数可以使用string类型,而且建议使用string类型进行参数传递4。对于exports函数请使用PChar类型做参数传递5。如果exports调用其

Delphi中的PChar类型的使用

Delphi中有三种不同的NULL结尾的字符串类型:PChar,PAnsiChar,PWideChar。从名字上可以看出,他们是对应Delphi中三种类型的Null(#0)结尾字符串。 PChar等这些类型与普通字符串类型不同的是,他们不会被自动分配和管理内存,需通过内存分配函数手动分配。下表为Delphi内存分配及对应的释放函数:-----------------------

delphi编程里的bool跟boolean类型有什么区别

bool是LongBool类型。 Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool。后面三种布尔类型是为了与其他语言兼容而引入的,一般情况下建议使用Boolean类型。这四种类型的布尔值占用内存的数量如下:Boolean 1 ByteByteBool 1 ByteWordBool 2 Bytes(1 Word)Lon

Delphi调用C写的dll

一.用C语言写了一个Dll,编译成功。 是一个非常简单的加密算法,代码如下: #include __declspec(dllexport) void Encipher(char a[16])    {  int i,len;  int s=1;       len=strlen(a);  for(i=0;i  {   a[i]=a[i]+s;   s=s+2;  }    

Delphi开发DLL常见问题

字符串参数 前面曾提到过,为了保证DLL参数/返回值传递的正确性,尤其是为C++等其他语言开发的宿主程序使用时,应尽量使用指针或基本类型,因为其他语言与Delphi的变量存储分配方法可能是不一样的。C++中字符才是基本类型,串则是字符型的线形链表。所以最好将string强制转换为Pchar。 如果DLL和宿主程序都用Delphi开发,且使用string(还有动态数组,它们的数据结构类似)作为导

Delphi使用C++库,向库中函数传递回调函数指针的问题解决

Delphi中专用的回调函数是of Object

Delphi 类库(DLL)动态调用与静态调用示例讲解

在Delphi或者其它程序中我们经常需要调用别人写好的DLL类库,下面直接上示例代码演示如何进行动态和静态的调用方法:

Delphi Dll插件窗体中遇到的各种问题

最近在公司写一个外壳程序,调用DLL插件把FORM嵌入到EXE中的一个PANEL中,其中遇到了不少的问题,大部分已经解决,还有几个至今没有找到解决方法,有待研究,也希望知道解决方法的富翁共享一下研究成果.   以下列出的问题及解决方法仅针对我写的程序(DLL插件把FORM嵌入到EXE中的一个PANEL中),和自己的解决方法.   从遇到的问题看出,DELPHI封装了太多的东西,有时候直

DLL动态链接库的实现及调用(VC++,Delphi)

该压缩包包括:1.动态链接库(DLL)的编译实例,包括_cdecl和stdcall两种常见函数调用约定的实现,并且解决了名字修改问题,在实例代码中有详细的说明!2.针对不同的函数调用约定,以及动态调用DLL库和静态调用DLL库分别提供了调用实例的源代码和程序!3.压缩包中包括VC++调用DLL的实例源码和Delphi调用DLL的实例源码和说明(利用前面VC++生成的DLL)!4.其中VC++调用DLL实例中还简单说明了计算string的长度,比较,大小写转换等功能实现的方法!

Delphi中调用VC编写的DLL内对象

Delphi以其独特的面向控件的开发方式、强大的数据库功能以及快速的编译技术,使得它自发布起即格外引人注意。随着Delphi 3提供丰富的Internet应用,Delphi日益成为最重要的软件开发工具之一, 它吸引了许多原Visual Basic、Foxpro、dBase甚至C++的程序员,而这些程序员使用Delphi时需要解决的一个重要问题就是怎样利用他们原有的代码。本文将介绍Delphi与C+

VC调用C#Dll之无法声明全局或静态变量变量

C++中调用C#,dll,想象着跟调用C++的dll 1>  TestSMS.cpp 1>d:\vs2010\testzhou\testsms\testsms\TestSMSDlg.h(36): error C3265: 无法声明托管“m_ActivityVote”(在非托管“CTestSMSDlg”中) 1>          不能声明全局或静态变量,也不能声明引用 gc 堆中对象的本机类

C#调用delphi dll接口问题

最近使用C#调用delphi dll中的PChar参数接口,结果出现了内存错误。在Stack上找到了答案,转来此处。 Delphi dll中的声明 procedure PasswordDLL(month integer; password pchar); export;C#调用部分的代码 [DllImport( "DelphiPassword.dll", C

Delphi中DLL两种调用方式的比较

摘要:本文阐述了Windows环境下动态链接库的概念和特点,对静态调用和动态调用两种调用方式作出了比较,并给出了Delphi中应用动态链接库的实例。 一、动态链接库的概念 动态链接库(Dynamic Link Library,缩写为DLL)是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件的扩展名一般是dll,也有可能是drv、sys和fon,它和

Delphi中DLL初始化和退出处理

Delphi中DLL初始化和退出处理choysan2010-01-08 8:56:43利用Unit的Initalization与Finalization这两个小节  可以在Unit的这两个小节中安排Unit的进入和退出,但是Program与Library并没有这两个部分,所以只能写在Unit中。利用ExitProc变量  在Library的begin..end.中间

JAVA(JNI,Jnative,JNA)分别调用delphi的动态链接库(dll)

首先我介绍一下本项目所要解决的技术问题:项目是要求用JAVA来调用delphi提供的动态链接库,而且硬件厂商已经提供了库以及接口文档.由于以前没有接触过这样的问题,所以考虑到要跟硬件设备打交道,首先通过查相关的资料,得出在JAVA里面用JNI可以直接访问C提供的动态链接库.但是问题是库是用delphi生成的,貌似用JNI不能直接访问,所以只能用C封装delphi的库供JNI访问,但是这样很麻烦,而

delphi 整数类型的表述

同一行的,表示的是相同范围的数。 shortint ---- int8 -128..127  smallint ---- int16  SHORT -32768..32767 integer  Longint ----- int32 LONG int64 -----LONGLONG Largeint   LONG64 NativeInt ----  IntPtr    INT

java 调用 delphi编写的dll

使用JNI(JAVA本地接口)来调用dll完成用delphi实现的功能:1. 编写Java类,在类内部静态加载要调用的dll文件,然后给出使用的函数的声明(用native关键字),示例如下:public class CompileDllCaller ...{    static ...{        System.loadLibrary("CompileDllCaller");   

[delphi技术] 关于sharemem造成dll错误的处理办法

今天一直在研究delphi生成dll的技术,搞了一天,略知皮毛。 其中在测试时,发现如果程序和dll之间用string作为参数传递时容易出现错误,通过查询得知,这需要在程序的uses中使用sharemem。 但是测试了好多次都没有成功,最后发现是自己对此理解错误了,这个sharemem需要用在调用和被调用的情况时候都使用。往往我们会在主程序的时候忘掉了引用。切记主程序的.dpr文件中也

Delphi Dll 消息处理 Dll (3)

Delphi中DLL的消息处理            事情的导火线是GIF图片的显示. 在应用程序中, 利用三方的GIFImage.pas可以很好的显示GIF图片. 这次, 要在一个DLL中显示一个GIF图片. 还是像往常一样拖个TImage放到窗体上, 打开一个动态GIF图片. 编译, 运行.            怪了: GIF图片显示是静态的. 还以为D

Delphi调用C# 编写dll动态库

Delphi调用C# 编写dll动态库

Delphi从内存加载dll,无需从资源中释放dll

今天CSDN的远程调用API终于恢复了访问,不过只能访问资源,不能发表!目前国内也很少有支持离线发布的博客了,唉。 下面是搜集来的关于如何不释放资源中的dll文件,直接从内存中加载dll ,Delphi版: 第一个例子:http://hi.baidu.com/broland/blog/item /6a42ed18812d1676dab4bd32.html 第二个例 子:http://2006ray.spaces.live.com/blog/cns!98ED6075D149E05D!114.en

dll传递string实现方法

[delphi] view plaincopy delphi中dll传递string的实现方法:   dll项目uses第一个引用sharemem单元;   调用的项目uses第一个引用sharemem单元;   调用的单元uses第一个引用sharemem单元;   **********************************************

DELPHI中调用DLL的方法和一些注意事项和技巧

原来的文章很多小问题,不过这篇文章不失是一篇DLL学习基础篇文章。(注:文章中的问题未作任何修改)转摘自:http://hanyi.codelphi.com/jiqiao/26.html第一章 为什么要使用动态链接库(DLL)提起DLL您一定不会陌生,在Windows中有着大量的以DLL为后缀的文件,它们是保证Windows正常运行和维护升级的重要保证。(举个例子,笔者的Win95 Sys

Delphi中的数组类型

数组可以使Object Pascal所拥有的任何数据类型,数组是一些数值的简单集合。 var   MyArray: array[0..4] of Integer;        { 声明一个数组包括5个整数数值} begin   MyArray[0] := -200;                    { 通过操作符[]就可以访问每个数组元素}   MyArray[1] := -100;

Delphi动态调用C++写的DLL

c++ DLL 文件,建议用最简单的c++编辑工具。不会加入很多无关的DLL文件。本人用codeblocks+mingw。不像 VS2010,DLL编译成功,调用的时候会提示缺其他DLL。 系统生成的main.h和main.cpp #ifndef __MAIN_H__ #define __MAIN_H__ #include /*  To use this exporte

用regasm注册C#的dll时报"没有注册类型"的解决方法

在项目属性-应用程序-程序集信息中勾上"使程序集 COM 可见"

Dll学习一_Dll 创建并动态引用窗体且释放窗体Demo

1、新建Dll工程 2、Dll工程全部代码 library SubMain; { Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source

Delphi中的几种布尔类型详解

Delphi中预定义的布尔类型有四种:Boolean ,ByteBool,WordBool,LongBool。其中,Boolean 类型是首选布尔类型,其余三种是为其它编程语言和Windows 环境提供兼容性支持。这些布尔类型在使用上大同小异,但如果混淆使用将可能会有意外结果。    现做简单辨析供大家参考。      一、从资源占用的角度进行比较    一项Boolean 类

DLL导出函数和类

DLL导出数据 函数 类

jnative调用delphi的DLL文件

1.下载JNative的包JNative-1.3.2下有三个文件:JNativeCpp.dll,libJNativeCpp.so,JNative.jar。JNativeCpp.dll拷到windows/system32目录下libJNativeCpp.so为Linux中使用的文件JNative.jar扩展包拷到%JAVA_HOME%/jre/lib/ext下

delphi 调用c/c++函数dll的坑

小知识C++中以&的参数在Delphi必须以const或者var申明,否则会产生错误。WIN32PROJECT1_API void test8(RECT &a) { a.left = 1; a.top = 2; a.right = 3; a.bottom = 4; } 此时参数为 RECT &a,在Delphi中有两种申明方式,各有不同 方式一 var procedur

Delphi的DLL里如何实现定时器功能?

一,首先引入“mmsystem”单元。 二,

C#调用Delphi Dll返回字符串的示例

  //----------------------Delphi-------------------procedure GetSqlData(ASource: PChar; ADest: PChar; ADestSize: Integer); stdcall;var S: string;begin if ASource = nil then Exit; S := Fo

VC中编写DLL的函数声明问题

http://blog.csdn.net/jamestaosh/article/details/4237757 编写动态链接库时,注意:::  4.5 __stdcall约定   如果通过VC++编写的DLL欲被其他语言编写的程序调用,应将 函数的调用方式声明为__stdcall方式,WINAPI都采用这种方式,而C/C++缺省的调用方式却为__cdecl。__std

总结一下DLL函数声明的一些问题

有关DLL的问题很多,很多人写DLL时经常出现调用程序无法找到相关的导出函数的问题,其实主要的原因是DLL在声明时出的问题。  在这里主要有两个问题,一个是调用约定的问题,一个是函数名修饰的问题,而这两个问题又是相互影响的。  首先看下一下四种声明方式:     1 声明为:extern "C" int __declspec(dllexport)add(int x, int y);  这种

Delphi中怎么调用VC++创建的动态链接库

Delphi以其独特的面向控件的研发方式、强大的数据库功能、快速的编译技术及简单易学的编程特性,使得他自发布之日起即格外引人注目,许多程式员也因此将他作为最佳选择的研发工具。然而,Delphi在科学计算、低端编程等方面的功能不如VC++。VC++功能强大、齐全,不过整个系统比较复杂、庞大,尤其对于初学者来说比较难学,其用户界面的研发远不如Delphi那样方便、快捷。那么,我们能否将两者的好处结合起

调用delphi的dll并向其传字符串参数的要点

1.首先delphi的string和别的语言不兼容,一般delphi中必须将参数声明为pchar(别的语言则传递字符串指针,或者按地址传参数)       2.delphi的UNIT引用里千万不能带上sharemem       3.delphi的参数类型只能是一般的,不能是var之类的       4.函数的声明必须是带有stdcall;export;实例:unit dlltest;interf

delphi如何调用C# dll

一般分为两步: 第一步,增加环境变量 第二部,注册.net组件 在你的环境变量Path中加入  C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin;  C:\WINNT\Microsoft.NET\Framework\v1.1.4322  随便建立一个ClassLibrary编译成DLL文件

从内存中加载DLL (修正版)

从内存中加载DLL (修正版)2008-06-17 19:09 转载地址: http://www.freshbug.com/archives/39 ======================================================

c#调用Delphi 的DLL控件,传递字符串的解决

在汽车检测软件中,需要调用公安网第三方控件,对方的接口DLL文件是Delphi写的,在经过多次尝试后可以连通。        对方的传输格式为INI文件格式内容,每行必须为回车符换行结尾,在把注册DLL控件的CharSet = CharSet.Auto格式传输时就出错,后来经过

请问Delphi调用VC写的dll,有传入和传出参数都是unsigned char*运行中有有关问题

请教Delphi调用VC写的dll,有传入和传出参数都是unsigned char*,运行中有问题 VC写的dll的定义  extern   "C "_declspec(dllexport)   unsigned   char*   GenAuthenNO(unsigned   char   *MachineNO,   unsigned   char   *AuthenNO)  Delphi

delphi 在DLL中添加窗体

方案一:   在DLL工程中新建一个FORM窗体.在窗体中加入如下代码:   1.首先需要再 implementation 之前声明下以下函数. 1 procedure SynApp(App:THandle);stdcall; 2 3    begin 4 5     Application.Handle := App ;   6 7    end;

C# 调用Delphi动态库

[DllImport("Service.dll", EntryPoint = "checkLotStatus", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] Delphi动态库函数中的入参PAnsiChar在C#中使用String类型 Delphi动态库函数中的出参PAnsiChar在C#中使

VS2015编写能够被vb\delphi等调用的dll

以编写VCDLL.dll为例 其中有myadd函数 1、头文件中声明 EXTERN_C  __declspec(dllexport)  int  __stdcall  myadd(int a, int b); 2、项目中添加 .def文件,内容如下,为了使导出的函数名保持不变 LIBRARY "VCDLL" EXPORTS myadd @ 1 3、编译选项 项目 -> 属性 -

Delphi调用DLL中的接口

最近很少上论坛,这几次发现好几个问题都是围绕如何使用DLL中的接口而展开的。 问题描述: 具体问题就是在隐式使用接口变量后,在FreeLibrary执行后,就会出现一个非法访址的错误。 这个错误的原因就是在FreeLibrary后,DLL以的代码均为不可用状态,而在代码执行完整个过程后,VCL要对RTL类型的数据进行清理。而在清理过程中肯定要对接口进行减1并进行释放相关对象。而对

Delphi 调用dll中的窗体

1. 定义窗体 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) btn1: TButton; procedure b

Delphi生成即调用带窗体的Dll

创建简单的带窗体的Dll:

立即提问
相关内容推荐