dll文件

基于反射技术汽车电子产品(ECU, SCM, 开关等)测试平台软件 (三)

大兔子大兔子 提交于 2019-11-27 06:25:52
继续继续。。 总结下我的平台软件,它的主要功能是用于实现设备控制加功能测试的软件,有点绕,我详细点说。因为有一个设备测试软件功能需求,还有一个软件开发过程的时间要求。为了同时满足这两个条件,就放弃了Visual studio, labview等平台,因为它对个人的能力要求较高,不同水平的人做的东西差距不是一般的大。最终我们的平台软件方案变成了两个具体的功能软件,一个我们叫它Editor,另一个称之为Tester。顾名思义,Editor用于生成XML格式的配置文件体系,而Tester则根据XML文件来运行。因此我们的应用工程师们就不再是Programmer了,他们只需要使用Editor软件来编写配置文件就可以了,实现的事情交给Tester。 扯了这么多,然后还要回到反射技术上去。列位看官想啊,测试设备的硬件能一样吗,除了继电器矩阵,还得需要仪器仪表吧,需要各种板卡吧,这些个硬件实际使用时用法还有差别,时序有要求呢,你都不能写死,只能是开发式的。反射技术正好满足这个要求。只要编写好每个硬件的使用DLL,Editor就可以反射出这个DLL中的方法,通过Editor用户只需用鼠标即可选择想执行方法,保存到配置文件中去,然后Tester按配置文件,同样通过反射找到DLL找到方法,就可以执行了。当然根据测试过程的需要有一些固定的流程就不说了。讲到这,原理其实已经介绍完了,有机会的话,我上图。

delphi dll调用问题

眉间皱痕 提交于 2019-11-27 04:52:12
dll传递string实现方法 delphi中dll传递string的实现方法: dll项目uses第一个引用sharemem单元; 调用的项目uses第一个引用sharemem单元; 调用的单元uses第一个引用sharemem单元; ************************************************************** delphi中dll传递string的实现方法: dll项目uses第一个引用sharemem单元; 调用的项目uses第一个引用sharemem单元; 调用的单元uses第一个引用sharemem单元; ************************************************************** 最好是不要使用 string作Dll参数或返回值,用Pchar更好兼容非Delphi语言编程 Delphi写DLL要注意的问题 a. 参数和返回值为string、动态数组类型时,DLL和EXE都要把ShareMem作为.dpr工程的第一个单元引用。当然最好是不要使用 string、动态数组类型,可以改用PChar、数组指针类型,如果是混合语言编程使用的话,就一定不能用string、动态数组类型。这样做的原因是 DLL和EXE的内存管理器(MemoryManager)不是一个,而string

Delphi从EXE或DLL获取ICO图标

末鹿安然 提交于 2019-11-27 04:46:33
WinAPI: ExtractIcon - 获取 EXE、DLL 或 ICO 文件中的图标 //声明: ExtractIcon( hInst: HINST; {调用函数的程序实例} lpszExeFileName: PChar; {文件路径; 文件可以是 *.exe、*.dll、*.ico} nIconIndex: UINT {图标索引} ): HICON; {返回图标句柄; 索引为 0 时返回第一个图标句柄; 索引为 #FFFFFFFF 时返回图标总数} //举例: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} uses ShellAPI; {ExtractIcon 在其中声明} procedure TForm1.Button1Click(Sender: TObject); var ico:

CRT的来历

◇◆丶佛笑我妖孽 提交于 2019-11-27 02:24:57
之前由于要研究一下VC编译选项对于最终编译出来的模块尺寸的影响,所以就顺便研究了一下Windows的CRT库的相关知识,收集如下: (转载自:http://www.cnblogs.com/chio/archive/2007/11/26/972152.html) [关于CRT]   CRT原先是指Microsoft开发的C Runtime Library,用于操作系统的开发及运行。后来在此基础上开发了C++ Runtime Library,所以现在CRT是指Microsoft开发的C/C++ Runtime Library。在VC的CRT/SRC目录下,可以看到CRT的源码,不仅有C的,也有C++的。   CRT原先的目的就是支持操作系统的运行。因为Windows操作系统除汇编部分外,都是用C/C++编写的,所以内核及许多关键服务都在CRT上运行(它们都采用dll技术动态链接)。此外,用 VC编写的C/C++程序也用到它们(可以动态链接,也可以静态链接,前者运行时需要系统中已安装CRT的dll,后者不需要)。可以说,CRT就是 Microsoft编写Windows时使用的低层类库。然后,它又被当作C++标准库的一个实现包含在了VC系列中;我们在VC中使用的C++标准库, 其实就是CRT的一个真子集(少了C++标准所不包含的代码,特别是大量的低层C代码)。  

理解 __declspec(dllexport)和__declspec(dllimport)

℡╲_俬逩灬. 提交于 2019-11-27 01:23:05
1、解决的问题:   考虑下面的需求,使用一个方法,一个是提供者,一个是使用者,二者之间的接口是头文件。头文件中声明了方法,在提供者那里方法应该被声明为__declspec(dllexport),在使用者那里,方法应该被声明为__declspec(dllimport)。二者使用同一个头文件,作为接口,怎么办呢? 2、解决办法:   使用条件编译:定义一个变量,针对提供者和使用者,设置不同的值。 1 #ifndef DLL_H_ 2 #define DLL_H_ 3 4 #ifdef DLLProvider 5 #define DLL_EXPORT_IMPORT __declspec(dllexport) 6 #else 7 #define DLL_EXPORT_IMPORT __declspec(dllimport) 8 #endif 9 10 DLL_EXPORT_IMPORT int add( int , int ); 11 12 #endif 转载于:https://www.cnblogs.com/nzbbody/p/3448385.html 来源: https://blog.csdn.net/weixin_30248399/article/details/99234533

反编译工具(收藏)

你。 提交于 2019-11-27 01:05:49
C#反编译工具Reflector使用方法,(支持VB、Delphi等) 收藏 新一篇: DOS经典命令 | 旧一篇: 无法显示 XML 页--解决方法 Reflector下载地址: http://www.pediy.com/tools/Decompilers/net/Reflector/Reflector.zip Reflector.FileDisassembler.dll 输入.cs文件的工具下载地址 : http://www.denisbauer.com/Downloads/Reflector.FileDisassembler.zip 1.下载Reflector.FileDisassembler.zip,解压后得到一些文件,其中Reflector.FileDisassembler.dll是已经编译好的,其它是它源码; 2.打开Reflector,在view菜单下的Add-Ins,将Reflector.FileDisassembler.dll添加到里面; 3.open一个dll,exe,或mcl为后缀的文件,当然要支持.net的 4.选择要反编译的dll(会在列表中显示),选择Tools->File Disassembler,在右窗口会出现设置存放源码位置的路径,点击产生就可以了 转载于:https://www.cnblogs.com/tufeng/archive/2009/01

使用抽象工厂反射获取不到Dal层对象,未能加载文件或程序集......

自古美人都是妖i 提交于 2019-11-26 19:30:26
Put aside the fog and see the essence 解决问题之前,要明白问题为什么会出现 如果只想单纯的解决这个问题的话,直接把错误复制然后百度就会出现很多很多解决方案 如果你想明白为什么会出现这个错误 1、首先了解反射的机制 任何类库编译完成之后都会生成.dll文件,反射就是从当前反射所在的.dll(DBZQ.Answer.Factory.dll)文件查找.dll 2、我们来看一下程序的代码和文件 web.config DalFacoty代码 我们找到web层的bin目录下,查看一下所有的程序集 很容易就会看出来,web下的bin目录并没有DBZQ.Answer.Dal.dll 3、为什么没有DBZQ.Answer.Dal.dll? 我们可以发现web/bin下有很多dll文件,就是没有DBZQ.Answer.Dal.dll文件 为什么? 我们先看看程序中有多少层 然后和dll文件仔细对比一下,发现只有9个dll文件,少了两个(DBZQ.Answer.Test和DBZQ.Answer.Dal) DBZQ.Answer.Test只是我平时写项目时做测试用的,没有任何层调用了Test层,会不会和引用有关系? 然后我们仔细理一下调用关系 不难发现,web层无论是直接还是间接,都引用了所有层,除了Dal层,这是我们就可以大胆的猜测,可能是引用的关系 会心一笑

C#中dll Import用法

爱⌒轻易说出口 提交于 2019-11-26 19:20:35
DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息。 DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称。 DllImport的定义如下: [AttributeUsage(AttributeTargets.Method)]   public class DllImportAttribute: System.Attribute   {    public DllImportAttribute(string dllName) {…} //定位参数为dllName    public CallingConvention CallingConvention; //入口点调用约定    public CharSet CharSet; //入口点采用的字符接    public string EntryPoint; //入口点名称    public bool ExactSpelling; //是否必须与指示的入口点拼写完全一致,默认false    public bool PreserveSig; //方法的签名是被保留还是被转换    public bool SetLastError; //FindLastError方法的返回值保存在这里    public

C# .NET中调用VB编写的DLL代码事例

筅森魡賤 提交于 2019-11-26 15:03:41
转:C# .NET中调用VB编写的DLL代码事例(我做了些修改) 转自: http://www.taotechinfo.com/collect/2010222/n68565463.html .NET中如何调用VB6编写的DLL。   本文以C#为例,自己实践了一下。希望对遇到相关问题的人有所帮助。   本示例分成两部分,第一,生成vb的dll。第二,在C#中进行调用。   第一部分:   1.首先在VB中选择ACTIVX DLL工程类型。如图:      2.然后修改工程名,class文件名,添加2个函数,如下图:      方便copy,代码如下:   Public Function FncTestDLLForDotNet(instr As String) As Integer   FncTestDLLForDotNet = 9   End Function   Public Function FncTestDLLForDotNet2(instr As String) As Integer   FncTestDLLForDotNet2 = 99   End Function   3.然后从文件菜单中选择生成TestDLLProject1.dll,即可生成DLL。   下面为第二部分:   1.打开vs2005,选用语言c#,工程类型为一个window application即可。