vs2008 C++创建和调用标准DLL
2023-09-11 14:16:45 时间
为了共享代码,需要生成标准的dll,本文将介绍在vs2008 C++生成及调用dll。
一、生成DLL
点击下一步,勾选“DLL”和“导出空符号”,单击“完成”
step 2,编写功能函数
#ifdef FUNDLL_EXPORTS
#define FUNDLL_API extern "C" __declspec(dllexport)
#else
#define FUNDLL_API extern "C" __declspec(dllexport)
#endif
在FunDll.h中声明add函数,在FunDll.cpp中实现该函数。修改完后代码如下:
FunDll.h:
[cpp]
view plain
copy
- //
下列 ifdef 块是创建使从 DLL 导出更简单的 - //
宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 FUNDLL_EXPORTS - //
符号编译的。在使用此 DLL 的 - //
任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将 - //
FUNDLL_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的 - //
符号视为是被导出的。 -
- #ifdef
FUNDLL_EXPORTS - #define
FUNDLL_API extern "C" __declspec(dllexport) - #else
- #define
FUNDLL_API extern "C" __declspec(dllexport) - #endif
- FUNDLL_API
int _stdcall intadd( plus1, intplus2);
FunDll.cpp
[cpp]
view plain
copy
- #include
"stdafx.h" - #include
"FunDll.h" -
- int
_stdcall intadd( plus1, intplus2) - {
-
int ret ; -
ret=plus1+plus2; -
return ret; - }
step3:添加 FunDll.def,修改内容为
[cpp]
view plain
copy
- LIBRARY
"FunDll" - EXPORTS
-
add
step 4,发布FunDll.dll文件
二,调用FunDll.dll
step1,新建C++控制台程序,项目名称为TestDll。
修改TestDll.cpp的代码为:
[cpp]
view plain
copy
- //
TestDll.cpp : 定义控制台应用程序的入口点。 - //
-
- #include
"stdafx.h" - #include
- #include
- #include
-
- //定义MYPROC为指向一个返回值为int型的函数的指针
- typedef
int (__stdcall int*MYPROC)( a, intb); -
- int
_tmain( intargc, _TCHAR* argv[]) - {
-
HINSTANCE hinstLib; -
MYPROC ProcAdd; -
int val1,val2,res; -
val1=4; -
val2=5; -
// Get a handle to the DLL module. -
hinstLib = LoadLibrary(L"FunDll.dll"); -
-
// If the handle is valid, try to get the function address. -
if (hinstLib != NULL) -
{ -
ProcAdd = (MYPROC) GetProcAddress(hinstLib, "add"); -
res=(ProcAdd)(val1,val2); -
printf("%d\n",res); -
} -
return 0; - }
step2,把FunDll拷贝至TestDll项目文件夹下。
step3,运行,测试通过。
相关文章
- RPC框架Thrift例子-PHP调用C++后端程序
- 基于c++11新标准开发一个支持多线程高并发的网络库
- C标准:C90、C99、C11_C/C++
- 【侯捷】C++STL标准库与泛型编程(第三讲)
- 【C++】三/五法则
- C++程序设计:原理与实践(进阶篇)16.1 标准库算法
- c++中UDP通信实现
- 开源免费的C/C++网络库(c/c++ sockets library)补充
- [C++]:万字超详细讲解多态以及多态的实现原理(面试的必考的c++考点)
- 《C++游戏编程入门(第4版)》——第1章 类型、变量与标准I/O:Lost Fortune
- 《C++游戏编程入门(第4版)》——2.15 问题讨论
- 《C和C++程序员面试秘笈》——1.10 标准头文件的结构
- 基于MFC(C++)实现(界面)学委作业管理系统【100010733】
- 基于 C++ C0 文法的简易编译器【100010116】
- 为什么一定要调用 setlocale 呢? 因为在 C/C++ 语言标准中定义了其运行时的字符集环境为 "C" ,也就是 ASCII 字符集的一个子集。使用setlocal改变整个应用程序的字符集编码方式(wcstombs使用前要设置 setlocale (LC_ALL, "chs"); )
- 【C++】对象初始化和清理
- C++实操 - 使用C标准库的头文件
- C++指针函数和函数指针