精华内容
下载资源
问答
  • 用什么语言能够写出打包后体积较小的软件?像下面这个软件只有一个单独的 exe,且只有4.5MB,双击后打开的速度很快。 ![图片说明](https://img-ask.csdn.net/upload/201812/23/1545572228_413941.jpg) 最终的...
  • 我现在有个需求,需要oracle的存储过程调用 自己编写好的DLL文件,请问各位大神有什么好的方法吗? <p>DLL文件编写语言有要求吗(本人目前想C#)? <p>ORACLE方面要如何定义和执行编译好的DLL文件中的方法呢?...
  • VFP编写DLL

    2008-11-11 13:32:00
    有两种DLL文件,一种是Declare说明然后调用,这种文件copy了就能,但不能智能提示,只能专门的工具查看里面有什么东西,这种Dll一般是C编写的。另外一种是COM方式的Dll,Createobject(对象名)方式调用,...
    有两种DLL文件,一种是用Declare说明然后调用,这种文件copy了就能用,但不能用智能提示,只能用专门的工具查看里面有什么东西,这种Dll一般是用C编写的。
    另外一种是COM方式的Dll,用Createobject(对象名)方式调用,对象名的两部分组成,也不能直接看出,需要开发者提供,下面就可以用智能提示了。
    这种DLL许多语言都可以开发,也都可以调用,VFP开发的DLL就属于这种。
    Local
    loCom
    loCom =
    Createobject('Mydll.Mydata')


    *!* 示例:
    首先建一个工程,如MyDll,
    然后建一个主程序,如MyDllMain,
    然后在这个主程序里写如下代码:
    **********取得表中记录总数**********
    Define Class MyData As Session OlePublic
    &&如果是VFP6-SP5以下,把SessionN改为Custom
        Procedure
    GetDataCount
       
        Lparameters
    tcTable
           
    Select
    0
           
    Select Count(*) From (tcTable) Into Array
    curData
           
    Use In
    (tcTable)
           
    Return Alltrim(Str
    (curdata))
       
    Endproc
    Enddefine
    ************************************
    编译时选择连编成DLL。


    在VFP中调用这个DLL:
    Local loCom
    loCom =
    Createobject
    ('Mydll.Mydata')
    ?loCom.GetDataCount('temp1')
    &&temp1为表名
    Release
    loCom
    loCom =
    Null
    Return


    注:
    1.session只能在VFP6.0+SP5开始才能使用,建议使用7.0或更高版本。若非要用6.0,则必须打补丁,或改用CUSTOM类。
    2.编译成的DLL,与EXE一样,要用运行库,还必须同时发布 VFP[x]T.
    Dll 文件([x]可为6、7、8或9)。
    3.如果感觉用DLL不方便,那么可以编译成用vfp的exe文件,直接在其他开发工具中调用执行,只要定义数据接口就行。如:其他开发工具调用vfp的exe程序,vfp程序把结果输出到一个txt文件中,然后再由其他开发工具进行读取即可。

    展开全文
  • electronedge.dll

    2019-11-09 15:16:41
    先简单说一下什么DllDll是动态链接库文件,也是一种代码库的形式...不过这里要注意了,C#语言编写生成的DllC++语言编写生成的Dll是不一样的,通过C#生成的Dll需要.net的开发环境,而C++生成的Dll就没有限制。
  • 了解火山PC调用易语言DLL

    千次阅读 2020-09-08 11:59:27
    一、首先我们需要易语言编写一个DLL文件,如下图:** 二、然后我们新建两个DLL方法,分别取名叫做TextZh,IntJf,如下图: 注意:这里给大家说明一下为什么英文方法命名,因为易语言是中文开发,而我们在...

    **大家都知道,一个编程工具最重要的,就能够调用API和其他语言的DLL,今天我们就来详解使用火山PC调用易语言DLL

    一、首先我们需要用易语言编写一个DLL文件,如下图:**
    在这里插入图片描述

    在这里插入图片描述

    二、然后我们新建两个DLL方法,分别取名叫做TextZh,IntJf,如下图:
    在这里插入图片描述

    注意:这里给大家说明一下为什么要用英文方法命名,因为易语言是中文开发,而我们在其他语言中调用的话肯定最好是用英文的!

    三、然后我们将它编译成DLL文件,名字可以随意取,如下图取名成【我的DLL】
    在这里插入图片描述

    四、新建一个火山MFC窗口项目并取名叫做DLL调用,然后将我们的DLL文件复制到这个项目中,如下图:

    在这里插入图片描述

    五、开始在我们的项目代码中编写调用命令,如下图:
    1、编写路径引用
    在这里插入图片描述

    2、调用易语言的DLL方法封装

    在这里插入图片描述

    3、易语言文本型参数需要指针操作的介绍
    在这里插入图片描述

    4、设置项目为Win32项目

    在这里插入图片描述
    在这里插入图片描述

    六、通过火山代码,来调用我们的易语言DLL文本操作方法,并编写指针操作等命令,如下图代码:

    在这里插入图片描述

    最后得到的结果值是:
    在这里插入图片描述

    很明显我们调用成功了,因为上面我们传入的文本是11个字,也就是22的长度

    七、接下来我们调用整数参数的方法,这个就简单很多了,如下图:
    在这里插入图片描述

    本文结束,本文章转载自利快云,原文地址:点击阅读原文

    本文对应案例源码下载地址:点击下载案例源码

    展开全文
  • 关于DLL的一些尝试

    2017-04-09 21:43:09
    标签:工程什么DLL(跟ddl很相近哈……) 由独立的程序模块创建得到动态...只要遵循约定的DLL接口规范和调用方式,各种语言编写DLL都可以相互调用。譬如Windows提供的系统DLL(其中包括了Windows的API),在任

    标签:工程


    什么是DLL

    (跟ddl很相近哈……)
    由独立的程序模块创建得到动态链接库(Dynamic Linkable Library)文件,可单独进行编译和测试。只有在EXE 程序确实要调用这些DLL模块的情况下,系统才会将它们装载到内存空间中。

    只要遵循约定的DLL接口规范和调用方式,用各种语言编写的DLL都可以相互调用。譬如Windows提供的系统DLL(其中包括了Windows的API),在任何开发环境中都能被调用,不在乎其是Visual Basic、Visual C++还是Delphi。


    静态库小测试

    生成LIB

    // test.h
    #ifndef LIB_H
    #define LIB_H
    extern "C" int add(int x, int y);
    #endif
    // test.cpp
    #include "test.h"
    int add(int x, int y)
    {
        return x + y;
    }

    编译生成test.lib,如果是在VS里的话,项目右键->属性->常规->项目默认值->配置类型->静态库,编译即可生成。

    调用LIB

    #include <stdio.h>
    #include <iostream>
    #include "..\\..\\test.h"  // 路径什么的根据自己电脑的来
    #pragma comment( lib, "..\\..\\..\\debug\\test.lib" )  //指定与静态库一起连接   
    int main(int argc, char* argv[])
    {
        printf("2 + 3 = %d", add(2, 3));
        system("pause");
    }

    test.h在这里会作为外部依赖项出现。
    经测试,三个文件里函数名必须要统一,否则就算lib能够生成也不能调用。

    以上,我很奇怪为什么在生成以及后面调用要多次#include "test.h" 一旦没有两个工程生成解决方案都会错,哭泣。


    动态库小测试

    生成DLL之dllexport语句

    // test.h
    #ifndef LIB_H
    #define LIB_H
    extern "C" int __declspec(dllexport)add(int x, int y);
    #endif

    __declspec(dllexport)语句声明函数add为DLL的导出函数,就是说这个函数可以被其他程序调用,即作为DLL的一个对外函数接口。
    反之若是dllimport,则声明一个导入函数,是说这个函数是从别的DLL导入的。

    // test.cpp
    #include "test.h"
    int add(int x, int y)
    {
        return x + y;
    }

    编译生成test.dll,如果是在VS里的话,项目右键->属性->常规->项目默认值->配置类型->动态库,编译即可生成。

    动态调用DLL

    #include <stdio.h>   
    #include <windows.h>   
    
    typedef int(*lpAddFun)(int, int); //宏定义函数指针类型   
    
    int main(int argc, char *argv[])
    {
        HINSTANCE hDll; //DLL句柄    
        lpAddFun addFun; //函数指针   
    
        hDll = LoadLibrary("..\\..\\..\\debug\\test.dll");
        if (hDll != NULL) {
            addFun = (lpAddFun)GetProcAddress(hDll, "add");
            if (addFun != NULL) {
                int result = addFun(2, 3);
                printf("%d", result);
            }
            FreeLibrary(hDll);
        }
        return 0;
    }

    这里不用#include "test.h",同时也是种动态调用,可以人为选择需要的函数选择加载、调用和释放。

    生成DLL之.def文件

    采用模块定义(.def)文件声明,提供了有关被链接程序的导出、属性及其他方面的信息。第一行为dll的名称,exports后面为导出的函数名,并指定其序号。

    LIBRARY temptest 
    EXPORTS   
    add @ 1

    有了这个文件以后,前面的test.h就可以不要了。
    可以用
    addFun = (lpAddFun)GetProcAddress(hDll, MAKEINTRESOURCE(1));
    语句来调用add函数。

    静态调用DLL

    与前面的动态相对的,还有静态调用方式。由编译系统完成对DLL的加载和应用程序结束时 DLL 的卸载。

    #include <stdio.h>   
    #include <windows.h>   
    
    #pragma comment(lib, "test.lib") 
    //.lib文件中仅仅是关于其对应DLL文件中函数的重定位信息   
    
    extern "C" int __declspec(dllimport) add(int x, int y);
    
    int main(int argc, char* argv[])
    {
        int result = add(2, 3);
        printf("%d\n", result);
        return 0;
    }

    一直报错error LNK2019,这里已经把test.libtest.dll拷到工程文件夹下面了。并且动态调用dll可行,除非是lib文件有问题。


    错误信息

    error MSB8020
    项目右键->属性->常规->平台工具集 选择电脑上安装好的版本,如v140

    error C3872: “0x3000”
    检查一下代码里是不是有中文全角空格,删掉即可。

    LNK1107: 文件无效或损坏
    附加依赖项误把一个lib项写成了dll

    error LNK2019: 无法解析的外部符号 __imp__xxx,该符号在函数 _xxxxx 中被引用
    一般这种错误加个函数的lib文件到附加依赖项就好了。


    预告

    VB调用C++的DLL…铺垫了半天还是不会啊……

    展开全文
  • 自己写的dll的简介

    2009-12-12 10:17:40
    2. 此外GetProcAddress是直接在.dll文件中寻找同名函数,如果DLL中的Test函数是个C++函数,那么由于在.dll文件中的实际文件名会被修饰(具体被修饰的规则可参考函数调用约定详解或者使用VC自带的Depends.exe查看),...
  • 许久不写C++的已经快忘光了,最近刚好有用到,乘机整理一下C++中如何封装Dll以及如何调试,如何调用的知识。 关于动态链接库有什么好处,我...打开VS(个人的VS2019)→新建项目→在C++语言+库下选择动态连接库 ...

    许久不写C++的已经快忘光了,最近刚好有用到,乘机整理一下C++中如何封装Dll以及如何调试,如何调用的知识。

    关于动态链接库有什么好处,我就不多废口舌了,直接开干吧。

    1、创建dll项目

    2、创建头文件(.h)和源文件(.cpp)

    2.1头文件编写

    2.2源文件编写

    3 调试dll


    1、创建dll项目

    打开VS(个人用的VS2019)→新建项目→在C++语言+库下选择动态连接库

    输入项目名称:CppDllDemo

    点击【创建】

    2、创建头文件(.h)和源文件(.cpp)

    在【解决方案资源管理器】中的【头文件】和【源文件】目录下,分别创建头文件:“CppDllDemo.h”和源文件:“CppDllDemo.cpp”。

    2.1、头文件编写

    这个头文件是指要声明对外暴露的函数的头文件,dll项目中不对外暴露的组件可以新建其他头文件按照C++普通方式写就好了。

    假设这次dll封装两个简单函数:两个double数的求和函数、打印“hello world”的函数。

    这个主头文件 个人习惯是按照如下格式来写:

    1、声明导出/导入宏
    
    2、头文件标识 #ifndef HEAD_H #define HEAD_H
    |
    |    3、不得不包含的头文件
    |
    |    4、一些要用的结构体、类等
    |
    |    extern "C"
    |    {
    |    |    5、要导出的函数声明
    |    |
    |    |
    |    |
    |    }
    |
    ┕结束头文件标识 #endif

     参考以上格式,查看如下代码(至少看起来不是很费劲了)

    #pragma once
    //定义导出、导入宏
    #ifdef CPPDLLDEMO_EXPORTS
    #define CPPDLLDEMO_API __declspec(dllexport)
    #else
    #define CPPDLLDEMO_API __declspec(dllimport)
    #endif // CPPDLLDEMO_EXPORTS
    
    //头文件标识
    #ifndef CPPDLLDEMO_H
    #define CPPDLLDEMO_H
    
    /*----------------------{
    包含一些不得不包含的头文件
    }----------------------*/
    
    /*----------------------{
    这里写一些结构体、类等
    }----------------------*/
    
    
    #ifdef __cplusplus
    extern "C"
    {
    #endif // __cplusplus
    
    
    	CPPDLLDEMO_API double Add(double a, double b);
    
    	CPPDLLDEMO_API void SayHello();
    
    
    #ifdef __cplusplus
    }
    #endif // __cplusplus
    
    
    #endif // !CPPDLLDEMO_H

    以上有几点要说明

    1、关于“#ifdef CPPDLLDEMO_EXPORTS”

    在创建好dll项目后,这个宏就已经被VS自动声明了,它的命名就是项目名全大写加“EXPORTS”。

    你可以在子项目属性中的预编译中看到:

    右键项目名,点击属性→【C/C++】→【预处理器】→【预处理器定义】

    2、宏CPPDLLDEMO_API :__declspec(dllexport)和__declspec(dllimport)

    在dll开发时,使用export,就是说带有这个的函数都是要输出供外部调用的

    import是给外部的,其他程序导入这个dll时,带有宏标记的函数就会被导入。

    3、extern "C" 

    如果是C++(#ifdef __cplusplus),就强制按照C标准进行编译,因为C++编译会对函数名及进行修改,导致调用时的很多麻烦。

    2.2、源文件编写

    在头文件中只做了函数声明,函数的定义要在源文件中编写,在“CppDllDemo.cpp”中,完成函数的定义:

    #include "pch.h"; //新版本的预编译头
    #include "CppDllDemo.h"  //包含创建的头文件
    
    #include <iostream>
    
    using namespace std;
    
    //函数定义
    
    double Add(double a, double b)
    {
    	double c = a + b;
    	return c;
    }
    
    void SayHello()
    {
    	cout << "Hello World!" << endl;
    }

     以上,就编写完成了,选择合适的解决方案平台(Debug/Release?,x86/x64?)后生成项目即可。

    如果有编译失败的,还请留言,我们一起研究研究。

    编译成功后,在生成的目录下就能找到生成“DebugCppDll.dll”文件,当让还有一并生成的其他文件,诸如“xxx.lib”文件。

    一般用动态方式加载dll的时候,直接拿“xxx.dll”文件去用就好了。

    3 调试dll

    dll项目不能像控制台程序一样的去运行,所以应该怎么调试呢,一般在dll项目的下,新建一个控制台程序(不嫌麻烦你也可以搞个mfc程序)来调试dll项目。

    在VS的【解决方案资源管理器】中,dll项目名的上方,即“解决方案‘xxxxx’”处右键,点击【添加】→【新建项目】

    选择C++控制台项目,取名“DebugCppDll”。

    创建好后,在【解决方案资源管理器】中该项目名右键→【设为启动项目】。

    再次右键 →【添加】→【引用】,在项目标签下选择刚才的dll项目

    点击确定添加完成后,在“DebugCppDll”项目下新建源文件,写main函数入口(正常情况下VS已经帮你写好“hello world”的程序了)。在文件头添加dll中的“.h”文件,如下:

    // DebugCppDll.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    
    #include <iostream>
    #include "..\CppDllDemo\CppDllDemo.h"  //dll的头文件
    
    using namespace std;
    
    int main()
    {
    	double result = Add(4.5, 11.2); //调用 Add函数
    	cout << "result = " << result << endl; //答应计算结果
    	SayHello();  //调用SayHello函数
    	cin.get();
    }

    运行可看到调用成功:

    接着当我们需要调试时呢,转到dll项目中,比如在“CppDllDemo.cpp”中打上断点;

    这样再次启动“DebugCppDll”项目(是启动项,所以之间点VS上面的运行按钮就好),就会命中该断点,方便我们的调试。

    ---------------

    尾巴:关于如何通过动态调用dll,下一篇文章进行详述

    展开全文
  • pdflib.dll 7.0.5

    热门讨论 2012-12-30 13:24:32
    虽然 PDFlib 自身是 C 语言编写的, 但也可以从多种其他语言或编程环境访问它。这种情况称为“语言绑定”。这些语言绑定覆 盖了所有当前 Web 和独立应用程序环境。应用程序编程接口 (API) 简单易学,且对于所有的 ...
  • 面再提示缺少什么dll 文件,都像这样解决就可以了。 二、Qt Creator 编写多窗口程序(原创) 实现功能: 程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直 接关闭这个对话框,便不能进入主窗口,整个程序...
  • 一直坚持使用5.11的版本,查看一些网络上的代码是使用新版本编写的,这就导致了有些代码不能完整显示,有些命令会显示???,每次新版查看之后,想换回来又需要重新勾选支持库,很是麻烦。完全更换新的版本吧,...
  •  首先我们要简单了解一下什么是QuickWAP,QuickWAP V1.0精简版是一款基于WAP1.2协议,利用VB6 开发的一个辅助ASP+WML语言编写WAP网页的组件。  其次我们要安装安装QuickWAP V1.0精简版  安装过程如下:  1.首先...
  • 另外还可识别出EXE文件用什么语言编写的VC++、Delphi、VB或Delphi等。 支持文件夹批量扫描 我们用PEID对easymail.exe进行扫描 找到壳的类型了 UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo 说明是...
  • PECL编写语言:C  呈现形式:dll(常见) 配置 : 直接解压到php/ext目录下即可 使用方法:在自己的PHP文件中调用特定函数或方法 备注: PECL通常用于补充一些PHP难以完成的底层功能 PEAR 是...
  • PHP Web Server 实例

    2017-02-06 10:45:00
    通过WebService,我们可以调用部署在其它地方的程序,而不用关心被调用的程序是在什么平台用什么语言编写的。这里我们使用php调用。  在php4时代调用WebService大部分使用的nusoap,到了php5已经有了自己的soap...
  • IIS7.0 伪静态

    2019-10-02 18:26:42
    现在的平台流行把真语言藏起来,在前台表现上让人看不出平台用什么语言编写的。(高手除外)。当然除这好处外还有很多好处就不多说了。现在说说在IIS中把增加其它扩展名的映射方法:首先在IIS中的站点里,找到处理...
  • 另外还可识别出 EXE 文件用什么语言编写的,比如:VC++、Delphi、VB 或 Delphi 等。 汉化包中包含了绝大多数插件,并添加了某些插件必须的库文件(mfc70.dll、msvcr70.dll、rtl70.bpl、vcl70.bpl)。 修正了在 ...
  • PEiD是一款著名的查壳工具,其功能强大,现在有软件很多都加了壳,给破解汉化带来非常大的不便,PEiD几乎可以侦测出所有的壳,其数量已超过470 种PE文档 的加壳类型和签名,另外还可识别出EXE文件用什么语言编写的...
  • Ungine 引擎

    千次阅读 2015-05-26 16:35:48
    ungine 是俄罗斯一个引擎 功能很强大 只是 开发化境很头疼 我的 是 notepad++ 配上 其自带的 sdk chm文件 来编程。 其有2种开发方式 1.使用unigine语言:类似 C语言 有类,继承 重写 这些特性,这种语言好处是...
  • C/C 语言写的程序需要有C/C 的运行库支持才能运行,主要是动态链接库,系统目录的那些dll文件就是各种动态链接库。 如果没有运行库的话,程序会无法运行,最常见就是提示dll文件丢失。 只要安装运行库就可以解决...
  • 第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,我也尝试过使用计算机语言编写程序来解决这些问题,但是随之而来的命令、语法、算法、系统框架和类库常常让我觉得这样是否有必要,难道...
  • 黑月是类似于斩月,目的是将易语言程序小型化,脱离支持库运行的工具。但实现原理和方法又与斩月不同,不需要...问:黑月使用什么语言编写的? 答:VC++ 6.0 问:黑月是否已支持__cdecl调用方式的外部函数? 答:支持
  • Delphi5开发人员指南

    热门讨论 2012-07-18 16:51:14
    9.10 从DLL中调回调函数 253 9.11 在不同的进程间共享DLL数据 256 9.11.1 一个可以被共享数据的DLL 256 9.11.2 访问DLL中的共享数据 259 9.12 引出DLL中的对象 261 9.13 总结 265 第10章 Delphi 5的打印 266 10.1 ...
  • 我们不需要学习了C#才能给.NET编写代码,因为Microsoft已经扩展了C++,还对Visual Basic进行了很多改进,把它转变成了功能更强大的语言,并允许把这些语言编写的代码用于.NET环境。但其他这些语言都因有多年演化的...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    4.2 引 类 型 .33 4.3 装箱和拆箱 .39 4.4 小 结 .42 第五章 变量和常量 .44 5.1 变 量 .44 5.2 常 量 .46 5.3 小 结 .47 第六章 类 型 转 换 .48 6.1 隐式类型转换 .48 6.2 显式类型转换 .53 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    4.2 引 类 型 .33 4.3 装箱和拆箱 .39 4.4 小 结 .42 第五章 变量和常量 .44 5.1 变 量 .44 5.2 常 量 .46 5.3 小 结 .47 第六章 类 型 转 换 .48 6.1 隐式类型转换 .48 6.2 显式类型转换 .53 ...
  • qq群自动回复助手

    2015-08-26 11:24:07
    最近在开发一款脚本语言纯c) 这款脚本语言主要是为了解决windows方面的一些问题(特点:简单 高效 ) 可以用来迅速编写病毒专杀等工具(当然是我自己发明的语法。。。)是全英文的 但是肯定会比易语言简单,...
  • 应该有人看过我的截图的哈哈,POST注入还在测试中有bug的,另外sql注入暂时不提供,蜘蛛功能我打算py语言编写—我的一个小伙伴帮我开发的,所以这个功能还需要时间,反正我觉得不会比网上那些什么挖掘机啊差!...
  • Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...

空空如也

空空如也

1 2 3 4 5 6
收藏数 120
精华内容 48
关键字:

dll文件用什么语言编写