-
dll文件制作
2019-04-16 01:09:16NULL 博文链接:https://lv-yjie2011.iteye.com/blog/1773984 -
VB6.0生成的DLL文件制作成安装包和注册使用
2011-10-06 16:38:06VB6.0生成的DLL文件制作成安装包和自动注册使用 本文是针对Excel VB6.0生成的DLL文件,使用第三方制作成安装文件,在用户电脑上进行安装注册,然后打Excel软件就可以使用DLL文件的功能,不用手动注册 -
dll文件制作2
2013-01-22 20:08:21今天教大家在VC中创建DLL文件的方法步骤,一起来学习一下,并不是很难的,相信聪明的你一看就会。 一.Win32动态链接库 1.制作的步骤: (1)新建WIN32 Dynamic-link Library工程,工程名为MyDll,选择A ...今天教大家在VC中创建DLL文件的方法步骤,一起来学习一下,并不是很难的,相信聪明的你一看就会。
一.Win32动态链接库
1.制作的步骤:
(1)新建WIN32 Dynamic-link Library工程,工程名为MyDll,选择A simple DLL project类型。
(2)MyDll.h的内容如下:
以下是引用片段:
extern "C" _declspec(dllexport) int sum(int a,int b);//本文所有的例子只有一个sum即加法函数。
(3)MyDll.cpp的内容如下:
以下是引用片段:
#include "stdafx.h"
#include "windows.h"
#include "MyDll.h"
BOOL APIENTRY DllMain(
HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
extern "C" _declspec(dllexport)int sum(int a, int b)
{
return a+b;
}
(4)编译之后产生了MyDll.lib与MyDll.dll两个文件。
2.使用方法:
(1).隐式调用法: 将MyDll.lib和MyDll.h拷贝到需要应用该DLL的工程的目录下,将MyDll.dll拷贝到产生的应用程序的目录下,并在需要应用该DLL中的函数的CPP文件中添加如下几行:
以下是引用片段:
#include "MyDll.h"
#pragma comment(lib,"MyDll");
(2).显示调用法:将MyDll.lib和MyDll.h拷贝到需要应用该DLL的工程的目录下,将MyDll.dll拷贝到产生的应用程序的目录下,并在需要应用该DLL中的函数的CPP文件中包含头文件,如:
以下是引用片段:
#include "MyDll.h"
同时还需要在Project->Setting->Link->Object/library modules的框中增加MyDll.lib这个库。
二.MFC动态链接库
1.制作的步骤:
(1)新建MFC AppWizard(dll)工程,工程名为MFCDll,选择Regular DLL using shared MFC DLL类型。
(2)在生成的MFCDll.cpp文件后面增加下面几行:
以下是引用片段:
int sum(int a, int b)
{
return a+b;
}
(3)在生成的MFCDll.def文件后面增加如下:
以下是引用片段:
sum @1 ;表示第一个函数是sum
(4)编译后会产生两个文件MFCDll.lib,MFCDll.dll
2.使用方法
(1)隐式调用法: 将MFCDll.lib拷贝到需要应用该DLL的工程的目录下,将MyDll.dll拷贝到产生的应用程序的目录下,并在需要应用该DLL中的函数的CPP文件中添加如下几行:
//注意这里没有在MFCDll.h中声明函数,所以不能直接包含MFCDll.h来声明函数。
以下是引用片段:
#pragma comment(lib,"MFCDll");
int sum(int a, int b);
//当然如果你的DLL中有很多函数,那可以另外写个MFCDll.h,包含所有的函数声明,然后直接将头文件包含进去
(2)显示调用法:与Win32的调用方法一样,不需要#pragma comment(lib,"MFCDll");,但是需要在Project->Setting->Link->Object/library modules的框中增加MFCDll.lib这个库。 -
DLL文件制作与调用
2014-01-06 16:31:17制作dll文件步骤: 1.在VC6.0 中建立一个新工程,文件—>新建工程—>Win32 Dynamic -Link Library 创建一个空的工程命名为 add 2.新建头文件 add.h add.c 并插入该工程(制作一个实现加法的简单的dll文件); 3. ...制作dll文件步骤:
1.在VC6.0 中建立一个新工程,文件—>新建工程—>Win32 Dynamic -Link Library 创建一个空的工程命名为 add
2.新建头文件 add.h add.c 并插入该工程(制作一个实现加法的简单的dll文件);
3. 编辑 add.h ,add.c 如下,
//add.h
#ifndef MYDLL_H #define MYDLL_H #define MYDLLAPI _declspec(dllexport) int MYDLLAPI add(int a,int b); #endif
//add.c
#include "add.h" int add(int a,int b) { return a+b; }
点击,编译,连接即可在 Debug/Release 文件夹下生成 add.dll 和add.lib。至此,dll文件制作完成。
调用DLL文件步骤:
1.新建一个空的 Win32 Console Application 工程 test;
2.将制作Dll 文件时生成的add.dll 、add.lib 和add.h 放到 test工程文件夹下;
2.新建源文件 test.c,编辑内容如下:
#pragma comment(lib,"add.lib") #include <stdio.h> #include "add.h" int main() { int a=1,b=2; printf("%d\n",add(a,b)); }
编译运行,既可调用add.ll中的 add函数进行求和;
更多使用,dll文件的内容参见:http://www.cnblogs.com/RascallySnake/archive/2012/10/17/2728557.html
-
C++ Dll文件制作样例
2012-07-23 22:02:37c++制作dll文件 http://www.360doc.com/content/12/0215/14/8484669_186802727.shtml dll文件的c++制作 1、首先用vs2005建立一个c++的dll动态链接库文件,这时, // DllTest.cpp : 定义 DLL 应用程序的入口点...c++制作dll文件
http://www.360doc.com/content/12/0215/14/8484669_186802727.shtml
dll文件的c++制作
1、首先用vs2005建立一个c++的dll动态链接库文件,这时,
// DllTest.cpp : 定义 DLL 应用程序的入口点。
//#include "stdafx.h"
//#include "DllTest.h"#ifdef _MANAGED
#pragma managed(push, off)
#endifBOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}#ifdef _MANAGED
#pragma managed(pop)
#endif
这段代码会自动生成,
2、自己建一个DllTest.h的头文件,和DllTest.def的块声明文件。
其中头文件是为了声明内部函数使用。块声明主要是为了在dll编译成功后固定好方法名。别忘记添加#include "DllTest.h"
3、在DllTest.h中加入如下代码
#ifndef DllTest_01
#define DllTest_01
#define EXPORT extern "C" __declspec(dllexport)
//两个参数做加法
EXPORT int _stdcall Add(int iNum1=0,int iNum2=0);
//两个参数做减法
EXPORT int _stdcall Subtraction(int iNum1=0,int iNum2=0,int iMethod=0);
#endif
4、在DllTest.def中加入如下代码
LIBRARY "DllTest"
EXPORTS
Add
Subtraction
5、在DllTest.cpp中写好代码为
// DllTest.cpp : 定义 DLL 应用程序的入口点。
//#include "stdafx.h"
#include "DllTest.h"#ifdef _MANAGED
#pragma managed(push, off)
#endifBOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}#ifdef _MANAGED
#pragma managed(pop)
#endif//加函数
int APIENTRY Add(int a,int b) // APIENTRY 此关键字不可少
{
return (a+b);
}
//减函数
int APIENTRY Subtraction(int a,int b,int i)
{
if(0==i)
return (a-b);
else
return (b-a);
}
6、这样编译生成就可以得到对应的DllTest.dll的文件了
二、C#调用dll文件
1、创建一个c#的控制台程序(当然其他也没有问题),自动生成以下代码
using System;
using System.Collections.Generic;
using System.Text;
//using System.Runtime.InteropServices;namespace CSharpIncludeC__Dll
{
class Program
{
static void Main(string[] args)
{
}
}
}
2、添加命名空间using System.Runtime.InteropServices;
3、若要引用dll文件,首先吧dll文件自行拷贝到bin\debug,文件夹下,没有的话,先编译一下。
4、添加属性
[DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
static extern int Add(int iNum1, int iNum2);
5、最终产生代码
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;namespace CSharpIncludeC__Dll
{
class Program
{
[DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
static extern int Add(int iNum1, int iNum2);[DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
static extern int Subtraction(int iNum1,int iNum2,int iMethod);static void Main(string[] args)
{
int iValue = Add(1, 2);
Console.WriteLine(iValue);
iValue = Subtraction(1, 2, 1);
Console.WriteLine(iValue);
Console.Read();
}
}
}
6、生成项目运行就可以了,结果是3和1 -
DLL文件制作与在VBA调用初级进阶
2008-12-26 21:37:00DLL文件制作与在VBA调用初级进阶■ 作者:ldhyob 日期:2004.02本文用一简例来演示如何将一正常在VBA中运行的代码移植到VB制作的DLL中去,并介绍如何在VBA中进行调用。这仅仅是最初级的介绍,希望能对此内容想了解的...DLL文件制作与在VBA调用初级进阶
■ 作者:ldhyob 日期:2004.02
本文用一简例来演示如何将一正常在VBA中运行的代码移植到VB制作的DLL中去,并介绍如何在VBA中进行调用。这仅仅是最初级的介绍,希望能对此内容想了解的版友们一些帮助,而已掌握该技术的FANS们完全可以跳过本文。
先来了解一下什么是DLL:DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:/Windows/System目录下。
因此,DLL文件可以看作是一个程序扩展函数库,成为应用软件程序的外挂接口。就象我们常在程序中用的WINDOWS API,就是如此,它是微软提供给程序员的函数宝库,用户只需了解函数功能与调用规则就可以拿来使用,而不用知道也不需要知道具体源码。也正因为此,现在许多VBA开发者在保护其代码时也多采用此法来维护其合法权益。
现在开始。假如我们要编这么一段代码:将工作表Sheet1的A1单元格的数值与B1单元格的数值相加填写到C1单元格去(嘿嘿,这是极简单的了,只是用来说明问题),在VBA模块我们可以编写这样的代码:- Sub test()
- On Error Resume Next
- Dim i, j As Integer
- With Worksheets("Sheet1")
- i = .Cells(1, 1).Value
- j = .Cells(1, 2).Value
- .Cells(1, 3) = i + j
- End With
- End Sub
执行上面的宏,会发现C1单元格自动会出现A1+B1的结果了。
下面我们在VB中生成包含以上宏功能的函数(子程序)的DLL文件。打开VB,“文件”-“新建工程”-“ActiveX DLL”,此时会弹出class1模块代码窗口,将如下代码写入:- Sub test()
- On Error Resume Next
- Dim i, j As Integer
- Dim EB
- Set EB = GetObject(, "Excel.Application")
- With EB.ActiveSheet
- i = .Cells(1, 1).Value
- j = .Cells(1, 2).Value
- .Cells(1, 3) = i + j
- End With
- Set EB = Nothing
- End Sub
在生成DLL之前,注意确保VB里"工程"---"引用"里"Microsoft Excel 9.0 Object Library"前面的勾已打上,再就是正确设定好DLL描述与名称。菜单“工程”----“工程属性”---“工程描述”,里面可以写上你的DLL功能名称或简介或版本号。“视图”---“属性”,设定名称为你在其他开发环境中欲使用的引用名称,如“Mytest”。好,现在点击菜单“文件”---“生成…dll”,会弹出路径与文件取名窗,按你的意思选择与输入好路径和即将生成的DLL文件名,按确定就会完成DLL的生成工作。
此时DLL已生成在你指定的目录下了,当前工程保不保存就随便你自己了,如果以后还想再编辑修改的话,当然得取个文件名保存好:)。生成的DLL如果正确的话,VBA中只要引用后就可正常调用了。
现在回到EXCEL VBA开发环境中来,先对刚生成的DLL进行一下引用。关于引用,可以手工引用,也可以用代码来做。手工引用的步骤是:在VBE窗口中,菜单“工具”---“引用”,会弹出如下窗口:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
“浏览”到刚才生成的DLL,选择打勾确定即可。代码引用: Shell "regsvr32 /s " & "…………..dll", vbHide,加s参数是防止出现确认窗口,影响界面。取消引用则使用/u参数。
然后在VBA中写调用的代码:- Sub DLLtest()
- Dim abc As New Mytest ‘定义abc为新类,即在DLL文件中定义的
- abc.test ‘调用DLL中提供的过程,来完成原来在VBA中的功能,起到隐藏代码的效果
- Set abc = Nothing
- End Sub
提供的示例中,将VBA方法与DLL调用放在了一起,便于大家进行比较。另外,DLL文件的制作远比我在这里介绍的复杂,还会涉及到类初始化、自定义属性与事件等内容,不过如果有时我们仅仅需要借助其来保护我们的VBA代码的话,掌握这部分也就足够了,呵呵。
-
[分享]DLL文件制作与在VBA调用初级进阶
2007-04-23 19:24:00[分享]DLL文件制作与在VBA调用初级进阶作者:ldhyob 日期:2004.02本文用一简例来演示如何将一正常在vba中运行的代码移植到VB制作的DLL中去,并介绍如何在vba中进行调用。这仅仅是最初级的介绍,希望能对此内容想... -
拷贝别人的dll文件制作成image问题
2009-12-03 17:01:00刚才从别人的工程里面拷贝过来几个dll文件发现直接用sysgen来编译不行,运行一个程序会死机(因为那个程序必须,要那几个库才能够跑起来) 但发现sysgen后,再拷贝那个几个文件,最后进行Make Run-tiem image发现就... -
屏蔽系统热键的DLL文件制作
2006-10-27 13:06:00WINLOCKDLL.H文件:WINLOCKDLL.C文件:/*********************************************************************** * WinLockDLL - Library containing functions to Lock Desktop, Taskbar, * * and disabl -
屏蔽键盘任意键的DLL文件制作
2006-10-27 18:22:00功能: 标准 DLL 导出函数头文件, 在使用该DLL的程序中包含此文件 */ /**/ /* */ /**/ /* 作者: 卢培培 (goodname008) 时间: 2004.8.21 */ /**/ /* */ /**/ /* BLOG: ... -
制作DLL文件
2013-11-21 17:42:19制作DLL文件以及使用方法,并在DOS下进行文件的编译。 -
如何将icon等资源嵌入到dll,制作moricons.dll的dll文件
2012-11-21 11:25:03如何将icon等资源嵌入到dll,制作moricons.dll的dll文件 -
dll文件的c++制作dll文件的c++制作
2009-02-08 14:03:00dll文件的c++制作1、首先用vs2005建立一个c++的dll动态链接库文件,这时,// DllTest.cpp : 定义 DLL 应用程序的入口点。//#include "stdafx.h"//#include "DllTest.h"#ifdef _MANAGED#pragma managed(push, off)#... -
DLL VS2005使用C++制作dll文件
2019-01-27 14:57:40DLL VS2005使用C++制作dll文件 -
VS2019制作DLL文件
2019-10-30 13:34:11用VS2019制作DLL文件的一般步骤很简单: 1创建新项目 2找到动态链接库DLL项目 3创建 4.分别在源文件和头文件添加相关函数f.cpp,f.h 第4步中,f.cpp没有主函数的各种自己的函数,f.h文件中是对应的头文件,不过... -
c++ 制作、调用Dll文件
2021-01-28 13:31:30一、制作Dll文件 1.创建Dll模板工程 2.创建头文件Header.h,代码如下 3.打开dllmain.cpp文件,删除里面的代码,编写新的代码如下 4.编译解决方案,生成dll和lib文件 二、调用Dll文件 1.创建新的工程文件 ... -
Visual C#(VS2008)制作DLL文件并使用DLL文件
2015-01-25 11:07:06一、制作.dll 1.首先创建一个新类库工程文件 文件->新建->项目->Visual C#->类库。...3.生成DLL文件 生成->生成myDll.dll,最后会在工程文件的bin\debug目录里看到myDll.dll,文件扩展名是 -
vc制作DLL文件与调用DLL文件的方法
2012-05-02 10:00:47一、制作DLL文件的步骤 2. 新建一个空项目(Empty project) 在类视图里新建一个普通类(Generic) 这是... -
vs2010制作dll文件
2012-10-03 17:21:50它会交你如何生成自己的dll文件,这样,你的代码会更加简洁,安全! -
dll文件的c++制作
2009-09-25 09:47:00dll文件的c++制作dll文件的c++制作 DLL操作 2009-06-22 23:12 阅读177 评论1 字号: 大 中 -
DLL图标文件制作工具IconJack32---提取EXE图标制作DLL工具
2011-11-14 22:30:41DLL图标文件制作工具IconJack32---提取EXE图标制作DLL工具 -
使用mingw制作dll文件
2018-07-02 15:23:00使用mingw制作dll文件 安装mingw 准备math.c文件 //math.c #include<stdio.h> int add(int a,int b){ return a+b; } int sub(int a,int b){ return a-b; } int mul(int a,int b){ return a*b; } int div... -
Visual C# 制作DLL文件
2014-02-10 09:24:00一、制作.dll1.首先创建一个新类库工程文件文件->新建->项目->Visual C#->类库。...3.生成DLL文件生成->生成myDll.dll,最后会在工程文件的bin\debug目录里看到myDll.dll,文件扩展名... -
vs 2017 制作Dll文件的两种方法,以及调用Dll文件的两种方法。
2018-04-06 16:22:35近来学习制作Dll文件,看了几个视频教程,看了网上的例子,看了msdn上的例子。现在做个总结,以便来日回顾,同时也希望以大家相互交流学习。注意1:用 method 1 named "Using Load - Time Dynamic Linking"...