Visual Studio中通过*.def文件创建dll

Windows系统下Visual Studio通过*.def文件创建dll,无需__declspec(dllexport)关键字。

1. 确定需要导出的函数,cpp文件中定义如下

void fun1()
{
	printf("fun1\n");
}
void fun2()
{
	printf("fun2\n");
}

2. 添加*.def文件

在这里插入图片描述
在这里插入图片描述
3. 编写*.def文件

LIBRARY test_dll

EXPORTS
fun1
fun2

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
.def文件是用来定义函数导出的名称以及函数的地址的文件,一般用于动态链接库(DLL)的开发。在Visual Studio,使用.def文件可以指定DLL哪些函数可以被外部程序调用。 下面是使用.def文件的步骤: 1. 创建一个DLL工程,选择Win32控制台应用程序模板。 2. 在项目添加一个.def文件,右键单击项目,选择“添加”->“新建项”,选择“Module-Definition File(.def)”文件类型。 3. 打开.def文件,定义需要导出的函数和变量,例如: LIBRARY MyDLL EXPORTS MyFunction1 MyFunction2 MyVariable1 DATA MyVariable2 DATA 其,LIBRARY指定生成的DLL文件名,EXPORTS指定需要导出的函数和变量名称。 4. 在需要导出的函数和变量前面加上关键字__declspec(dllexport),例如: __declspec(dllexport) int MyFunction1(int a, int b) { return a + b; } __declspec(dllexport) int MyVariable1 = 10; 5. 编译生成DLL文件。 6. 在外部程序调用DLL导出的函数和变量,例如: #include <Windows.h> #include <iostream> typedef int(*MYFUNCTION)(int, int); typedef int* MYVARIABLE; int main() { HMODULE hModule = LoadLibrary(L"MyDLL.dll"); if (hModule == NULL) { std::cout << "LoadLibrary failed!\n"; return -1; } MYFUNCTION MyFunc1 = (MYFUNCTION)GetProcAddress(hModule, "MyFunction1"); if (MyFunc1 == NULL) { std::cout << "GetProcAddress failed!\n"; FreeLibrary(hModule); return -1; } int result = MyFunc1(1, 2); std::cout << "Result = " << result << "\n"; MYVARIABLE MyVar1 = (MYVARIABLE)GetProcAddress(hModule, "MyVariable1"); if (MyVar1 == NULL) { std::cout << "GetProcAddress failed!\n"; FreeLibrary(hModule); return -1; } std::cout << "MyVar1 = " << *MyVar1 << "\n"; FreeLibrary(hModule); return 0; } 注意:在使用.def文件时,必须将需要导出的函数和变量前面加上关键字__declspec(dllexport),否则外部程序将无法调用DLL的函数和变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值