提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
除了用dllexport生成dll, 还可以用def文件方式导出
一、头文件
#ifndef __USE_OP_H__
#define __USE_OP_H_
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
int add(int a, int b);
int sub(int a, int b);
#ifdef __cplusplus
}
#endif
#endif // ! __USE_OP_H__
二、源文件
#include "use_op.h"
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
三、def
LIBRARY def_test
EXPORTS
add @1 NONAME
sub @2 NONAME


四、demo调用
代码如下(示例):
#include <iostream>
#include "use_op.h"
using namespace std;
int main()
{
int ret = add(1, 2);
cout << ret << endl;
return 0;
}
#include <Windows.h>
#include <iostream>
using namespace std;
typedef int (*func_ptr)(int, int);
int main()
{
HINSTANCE hDll = LoadLibrary("E:/zmc_control_api/zmc_def_dll/def_lib/def_test.dll");
func_ptr add_ptr, sub_ptr;
if (hDll)
{
add_ptr = (func_ptr)GetProcAddress(hDll, (LPCSTR)1);
sub_ptr = (func_ptr)GetProcAddress(hDll, (LPCSTR)2);
}
else
{
printf("error!\n");
return -1;
}
printf("%d\n", add_ptr(1, 2));
printf("%d\n", sub_ptr(2, 1));
return 0;
}
``
本文介绍了如何使用def文件来导出C++动态链接库(DLL),详细讲解了从头文件、源文件到def文件的配置过程,并给出了示例代码进行调用演示。

6409

被折叠的 条评论
为什么被折叠?



