自己创建自己的dll库,有时候会显得特别方便,而且非常简单。。。下面就简单在VS2005上介绍dll库创建和调用的全过程。
一:创建自己的dll
1)创建一个win32 console application 选择dll
然后创建一个DllTest.cpp code如下:
// lib3.cpp : 定义 DLL 应用程序的入口点。
//
#include "stdafx.h"
extern "C" _declspec(dllexport) int Add(int,int); //注意了
#ifdef _MANAGED
#pragma managed(push, off)
#endif
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
int _declspec(dllexport) Add(int a, int b)
{
//return MessageBox(NULL, L"GOOD", L"Caption", 0 );]
return a+b;
}
#ifdef _MANAGED
#pragma managed(pop)
#endif
编译便可生成dll文件
二: 调用测试刚才生成的dll。
上面的dll有一个加法Add的函数,记得刚上面的那个dll拷贝到下面这个main函数所在的文件同目录下,main代码如下:
//#include "stdafx.h"
#include <windows.h>
#include <iostream>
typedef int (* MYPROC)(int,int); //注意别写错了;
int main(int argc, char* argv[])
{
int error;
MYPROC pFunc;
HMODULE hdll_lib =::LoadLibraryEx(TEXT("DllTest.dll"),NULL,0);
//
if(hdll_lib == NULL)
{
error = GetLastError();
printf("error = %d",error);
FreeLibrary(hdll_lib); return -1;
}
pFunc=(MYPROC)GetProcAddress(hdll_lib, "Add"); //
if(!pFunc)
{
error = GetLastError();
printf("error = %d",error);
FreeLibrary(hdll_lib); return -1;
}
int a=pFunc(1,2);//
printf("%d\n",a);
FreeLibrary(hdll_lib);
system("pause");
return 0;
}
分享到:
相关推荐
本示例主要探讨如何在PB11.5环境中创建和调用DLL(动态链接库)文件,以便实现代码复用和模块化设计。 创建DLL的步骤通常包括以下几个关键环节: 1. **设计接口**:首先,你需要定义DLL的接口,这包括确定对外公开...
Delphi创建Dll和调用Dll示例(包含Dll窗体调用) 网上介绍比较杂乱,特地整理了一份Demo代大家学习参考。 1.socketA_dll 为dll工程目录。 2.LoadDllDemo 为【静态调用】dll工程目录。 3.LoadDllDemo_动态调用 为...
3. **加载和调用DLL**:在程序运行时,先使用`LoadLibrary`加载DLL,然后使用`GetProcAddress`获取函数地址。之后,你可以像调用普通函数一样调用DLL中的函数。 ```delphi procedure TForm1.Button1Click(Sender: T...
本教程将详细讲解DLL的创建和调用过程。 首先,我们需要理解DLL的基本概念。DLL文件包含了一组函数和数据,这些函数可以在运行时被其他程序动态链接。这样做的好处在于,多个程序可以共享同一份代码,减少了内存...
3. **使用DLL**:在主程序中,像调用普通函数一样调用DLL的函数。例如: ```cpp MyDllFunction(); ``` 四、注意事项 1. **版本兼容性**:确保调用的DLL版本与应用程序的版本匹配,否则可能导致运行时错误。 2....
创建和调用DLL可以帮助我们实现代码模块化,提高代码的复用性和执行效率。下面将详细讲解如何在C#中创建和调用DLL实例。 首先,我们需要创建一个DLL项目。在Visual Studio中,选择"新建项目",然后在模板中找到"C#...
本文将深入探讨两种调用DLL中函数的方法:隐式调用和显式调用,并通过一个名为`TestCallDll`的示例项目进行解释。 **隐式调用DLL** 隐式调用是通过链接器在编译时完成的。当编译器处理源代码时,如果遇到对DLL中...
c++ 创建dll(动态库)、static lib(静态库),以及dll的相互调用 示例vs2022工程 sln项目文件在 c++_dll_staticLib\libtest\MathTestLib 目录下 以前有小错误,更新了错误(2023-05-28)
"VS2010以运行加载方式调用DLL"是一个关于如何在Visual Studio 2010环境下,通过运行时动态加载的方式调用DLL文件的主题。这种方法与静态链接相反,静态链接是在编译时将DLL的功能合并到可执行文件中,而动态加载则...
1. **添加引用**:在调用DLL的工程中,引入刚刚创建的DLL头文件,这将使编译器知道如何声明和调用DLL中的函数。 2. **链接DLL**:将DLL的.lib文件添加到调用工程的链接器输入项,这样编译器就知道在哪里寻找DLL的...
4. 调用DLL函数:由于已静态链接MFC,可以直接像使用本地函数一样调用DLL中的函数,无需`LoadLibrary`和`GetProcAddress`。 两种调用方式的比较: - 动态调用占用内存小,因为多个进程可以共享同一个DLL实例。但...
总结,这个工程实例为开发者提供了创建和使用DLL的模板,涵盖了从定义接口、实现功能到在其他项目中调用DLL的全过程。通过学习和实践,可以更好地理解和运用DLL技术,提升代码的效率和可维护性。
总之,掌握在Delphi 10.2中创建和调用DLL是一项重要的技能,它能帮助你构建可复用的组件和模块,提高代码的灵活性和维护性。通过深入学习和实践,你将能够灵活运用这些技术来解决各种编程问题。
通过以上步骤,开发者可以在QT和MFC之间灵活地调用DLL,实现不同框架间的交互。然而,这样的跨框架调用可能会增加项目的复杂性,因此在设计时需要谨慎考虑依赖关系和接口的稳定性。同时,遵循良好的编程实践,如模块...
在描述中提到的"有别于Exe调用dll",指的是通常的应用程序(EXE)调用DLL的情况。在典型的DLL使用场景中,一个主应用程序(EXE)加载并调用DLL中的函数来执行特定任务。然而,当涉及到多个DLL互相调用时,情况变得...
3. 在C#代码中,使用以下代码调用DLL中的`add`函数: ```csharp using System; using System.Runtime.InteropServices; class Program { [DllImport("DLLTest.dll")] public static extern int add(int a, ...
C语言创建DLL,并在C中调用DLL的知识点总结 C语言创建DLL并在C中调用DLL是非常重要的一项技能,特别是在Windows平台上。在这篇文章中,我们将详细介绍如何创建DLL文件,以及如何在C语言中调用DLL文件。 一、DLL的...
在C#中,创建和调用DLL是常见的操作,尤其在实现模块化开发或者跨项目复用代码时。本篇文章将深入探讨如何在C#中创建DLL以及如何在其他应用程序中调用这些DLL。 首先,我们来了解如何创建一个C# DLL。创建DLL的过程...
#### LabVIEW调用DLL文件的方法 在创建完DLL文件后,接下来的任务是如何在LabVIEW中有效地调用这些DLL。有两种主要的方法可供选择: ##### 方法一:使用Call Library Function Node(CLN)节点 1. **创建新的VI**...
1. **LoadLibrary** 和 **GetProcAddress**:这两个函数是动态调用DLL的核心。`LoadLibrary`函数用于在运行时加载指定的DLL文件,返回一个模块句柄,表示该DLL已被加载到进程的地址空间。`GetProcAddress`则用于从已...