VS2010 C语言DLL项目hello world程序以及win32控制台程序调用dll示例

一、使用Visual Studio 2010编写C语言 DLL项目hello world程序

VS2010 C语言DLL项目hello world程序以及win32控制台程序调用dll示例_第1张图片

1.点击桌面 VS2010 图标,运行程序。(或者通过菜单栏打开程序) 

VS2010 C语言DLL项目hello world程序以及win32控制台程序调用dll示例_第2张图片

2.点击【文件】 -> 【新建】 -> 【项目】

3.点击【VisualC++】和【win32控制台应用程序】,设置好名称和存储位置,点击【确定】

VS2010 C语言DLL项目hello world程序以及win32控制台程序调用dll示例_第3张图片

 4.点击【下一步】

VS2010 C语言DLL项目hello world程序以及win32控制台程序调用dll示例_第4张图片

5.选择【DLL】和【空项目】,点击【完成】

VS2010 C语言DLL项目hello world程序以及win32控制台程序调用dll示例_第5张图片

6.至此就完成了控制台项目的新建,在VS2010程序界面的右侧可以看见新建好的控制台项目

7.在项目名下方的【源代码】(或【头文件】)文件名上点击鼠标右键,在弹出菜单栏上点击【添加】-> 【新建项】(或【现有项】,现有项是已经存在的源代码文件)

8.点击【代码】 -> C++文件(.cpp)(或【头文件(.h)),输入新文件的名称(如:demoDll),点击【添加】

VS2010 C语言DLL项目hello world程序以及win32控制台程序调用dll示例_第6张图片

9.此时在VS2010程序界面右侧就可以看到源文件,点击源文件就可以开始输入代码了

10.在源文件中(如:demoDll.cpp)输入下述代码,确定正确无误之后继续往下

#include "demoDll.h"

int add(int a, int b) {
    return a + b;
}

11.在项目名下方的【头文件】文件名上点击鼠标右键,在弹出菜单栏上点击【添加】-> 【新建项】(或【现有项】,现有项是已经存在的源代码文件)

12.点击【代码】 -> 【头文件(.h),输入新文件的名称(如:demoDll),点击【添加】

VS2010 C语言DLL项目hello world程序以及win32控制台程序调用dll示例_第7张图片

13.在源文件中(如:demoDll.h)输入下述代码,确定正确无误之后继续往下

#pragma once

// extern "C" 是表示C语言代码,优点通常调用动态库不改变函数名
// _declspec(dllexport) 导出函数
extern "C" __declspec(dllexport) int add(int a, int b);

14.根据应用场景进行平台设置

VS2010 C语言DLL项目hello world程序以及win32控制台程序调用dll示例_第8张图片

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控制台程序的源文件下,位置如下图所示。

VS2010 C语言DLL项目hello world程序以及win32控制台程序调用dll示例_第9张图片

3.win32控制台程序的demo.cpp文件内容,用下述代码覆盖

#include 
#include
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、在菜单栏上选择“调试”-“开始执行(不调试)”命令。

VS2010 C语言DLL项目hello world程序以及win32控制台程序调用dll示例_第10张图片

2、编译环境中使用快捷键Ctrl+F5直接开始执行。

6.运行结果

VS2010 C语言DLL项目hello world程序以及win32控制台程序调用dll示例_第11张图片

三、资源下载链接

https://download.csdn.net/download/xijinno1/87862021

你可能感兴趣的:(C语言知识点杂烩,c++,microsoft,windows,c语言,dll)