vs2012使用向导创建和使用dll

本文详细介绍了如何在VS2012中使用向导创建DLL,包括设置项目类型、导出符号、编写头文件和源文件,以及如何调用DLL。在创建DLL时,重点在于定义MYDLL_API宏,并在头文件中声明导出的类、函数和变量。在调用DLL时,需确保DLL、LIB文件和调用程序在同一目录下,并正确包含头文件和链接库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、制作dll
1.选择Win32项目命名为"mydll"
2.选择dll,勾选导出符号(这样就有示例模板了)。

3.会生成一系列文件,实际上用到的只有mydll.h,mydll.cpp两个文件,里边有三个例子,一个是全局变量示例,一个是全局函数例子,还有一个是类,只要在他的基础上改就行了,下面演示hello world:

mydll.h文件:
// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 MYDLL_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
// MYDLL_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif

// 此类是从 mydll.dll 导出的
class MYDLL_API MyClass {
public:
	// TODO: 在此添加您的方法。
	void Say() const;
};

extern MYDLL_API int g_nNum;

MYDLL_API void Say(void);

// 不能是模板函数,不能在此定义函数

mydll.cpp文件
// mydll.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"
#include "mydll.h"

#include <iostream>

// 这是导出变量的一个示例
MYDLL_API int g_nNum = 0;

// 这是导出函数的一个示例。
MYDLL_API void Say(void)
{
	std::cout << "Hello World" << std::endl;
}

// 类成员函数
void MyClass::Say() const
{
	std::cout << "Hello World" << std::endl;
}
4.生成->生成解决方案

二、调用dll
1.从生成的dll项目中,找到mydll.dll, mydll.lib, mydll.h放到调用dll的工程根目录中
2.包含mydll.h,#pragma comment(lib, "mydll.lib")就可以调用了

main.cpp文件
#include "mydll.h"
#include <iostream>

#pragma comment(lib, "mydll.lib")

int main()
{
	// 1.全局变量
	std::cout << g_nNum << std::endl;
	
	// 2.全局函数
	Say();

	// 3.对象
	MyClass().Say();

	system("pause");
	return 0;
}

三、注意
1.调试的时候dll文件和调用它的cpp文件放在同一目录下;生成的exe和dll要在同一个目录下。比如Debug里的exe不能单独运行,需要把dll拷过来
2.mydll.h中不能定义(实现)函数
3.不能在mydll.h中声明函数模板
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值