一、使用Visual Studio 2010编写C语言 DLL项目hello world程序
1.点击桌面 VS2010 图标,运行程序。(或者通过菜单栏打开程序)
2.点击【文件】 -> 【新建】 -> 【项目】
3.点击【VisualC++】和【win32控制台应用程序】,设置好名称和存储位置,点击【确定】
4.点击【下一步】
5.选择【DLL】和【空项目】,点击【完成】
6.至此就完成了控制台项目的新建,在VS2010程序界面的右侧可以看见新建好的控制台项目
7.在项目名下方的【源代码】(或【头文件】)文件名上点击鼠标右键,在弹出菜单栏上点击【添加】-> 【新建项】(或【现有项】,现有项是已经存在的源代码文件)
8.点击【代码】 -> 【C++文件(.cpp)】(或【头文件(.h)】),输入新文件的名称(如:demoDll),点击【添加】
9.此时在VS2010程序界面右侧就可以看到源文件,点击源文件就可以开始输入代码了
10.在源文件中(如:demoDll.cpp)输入下述代码,确定正确无误之后继续往下
#include "demoDll.h"
int add(int a, int b) {
return a + b;
}
11.在项目名下方的【头文件】文件名上点击鼠标右键,在弹出菜单栏上点击【添加】-> 【新建项】(或【现有项】,现有项是已经存在的源代码文件)
12.点击【代码】 -> 【头文件(.h)】,输入新文件的名称(如:demoDll),点击【添加】
13.在源文件中(如:demoDll.h)输入下述代码,确定正确无误之后继续往下
#pragma once
// extern "C" 是表示C语言代码,优点通常调用动态库不改变函数名
// _declspec(dllexport) 导出函数
extern "C" __declspec(dllexport) int add(int a, int b);
14.根据应用场景进行平台设置
x86(Win32)、x64的区别:
x86(Win32)平台编译出来的exe(可执行文件)或dll(动态链接库)都是32位的;x64对应的则是64位的。
若你的启动项目,即主程序(编译出来是exe文件的)是x86平台下编译的,而它所依赖的一个项目(或动态链接库)是由x64位平台编译出来的,则会提示“未能加载文件或程序集...或它的某一个依赖性。试图加载格式不正确的程序。”之类的错误。这是因为32位程序不能加载64位的dll,更不能调用其中的类、方法和对象等。反之,若主程序是由x64平台编译出来的,而dll是x86的呢?答案。。也是不行的!
15.点击【生成】 -> 【重新生成解决方案】(或快捷键Ctrl + Alt + F7),直至没有报错为止
在输出文件夹(Debug或Release)下可以找到新生成的demoDll.dll和demoDll.lib。
如何使用DLL工程生成的文件,参见下一节内容。
二、win32调用dll示例
1.参照文章【2022 和 VS2010 C语言控制台输出 Hello World VS2022 和 VS2010 C语言控制台输出 Hello World_vs控制台输出_西晋的no1的博客-CSDN博客 】,建立一个win32控制台程序。
2.将上述DLL项目生成的demoDll.dll文件放到win32控制台程序的源文件下,位置如下图所示。
3.将win32控制台程序的demo.cpp文件内容,用下述代码覆盖
#include <stdio.h>
#include<Windows.h>
int main()
{
HMODULE h = NULL;//创建一个句柄h
h = LoadLibrary(L"demoDll.dll");
if (h == NULL)//检测是否加载dll成功
{
printf("加载DLLTest1.dll动态库失败\n");
return -1;
}
typedef int(*AddFunc)(int, int); // 定义函数指针类型
AddFunc add;
// 导出函数地址
add = (AddFunc)GetProcAddress(h, "add");
int sum = add(100, 200);
printf("动态调用的结果%d\n", sum);
return 0;
}
4.点击【生成】 -> 【重新生成解决方案】(或快捷键Ctrl + Alt + F7),确定正确无误之后继续往下
5.运行程序
代码输入完成以后,可以通过以下2种方法来运行。
1、在菜单栏上选择“调试”-“开始执行(不调试)”命令。
2、编译环境中使用快捷键Ctrl+F5直接开始执行。
6.运行结果
三、资源下载链接
https://download.csdn.net/download/xijinno1/87862021