C++ 实践之动态库完整实现
2017-08-09 00:00
525 查看
摘要: 保持对技术的
这几日来一直在鼓得C++终于有些成果。下面就把这一段时间的努力分享一下。首先动态库文件代码如下:
study_dll:
common.h 头文件:
common.cpp 主文件:
common.def 文件
在成功生成动态库文件后,将study.dll文件拷贝到测试程序根目录。
C++测试程序如下:
完美输出对应结果。下一步尝试引入对象、结构体 进行 动态库 封装。
这几日来一直在鼓得C++终于有些成果。下面就把这一段时间的努力分享一下。首先动态库文件代码如下:
study_dll:
common.h 头文件:
#ifndef DLL #define DLL extern "C" int __stdcall readIniFile(char* lable, char* anchor, char* contentValue); #endif
common.cpp 主文件:
#include <iostream> #include <string.h> #include <windows.h> using namespace std; #define INI_FILE_PATH "./study.ini" #define LOG_VALUE_MAXSIZE 80 int readIniFile(char* lable, char* anchor, char* contentValue) { char buffer[LOG_VALUE_MAXSIZE]; GetPrivateProfileString(lable, anchor, NULL, buffer, sizeof(buffer), INI_FILE_PATH );//读取 配置文件 需要引入 <windows.h> strcpy(contentValue, buffer); //cout << contentValue; return 0; }
common.def 文件
LIBRARY common EXPORTS readIniFile @ 1
在成功生成动态库文件后,将study.dll文件拷贝到测试程序根目录。
C++测试程序如下:
#include <iostream> #include <string.h> #include <windows.h> using namespace std; typedef void(*Dllfun)(char* , char*, char*); int main() { cout << "************************************" << "\n"; cout << "这是 study 项目" << "\n"; cout << "************************************" << "\n"; cout << "************************************" << "\n"; cout << "这是 调用study.dll readIniFile方法运行" << "\n"; Dllfun read; HINSTANCE hdll; hdll=LoadLibrary("study_dll.dll"); if(hdll==NULL){ FreeLibrary(hdll); } read=(Dllfun)GetProcAddress(hdll,"readIniFile"); if(read==NULL){ FreeLibrary(hdll); cout<<"read is null"; }else{ } char* lable = "Log"; char* anchor = "Level"; char* iniValue1 = (char*)malloc(80); try{ read(lable, anchor, iniValue1); } catch(exception *ex){ cout<<ex; } cout << "************************************" << "\n"; return 0; }
完美输出对应结果。下一步尝试引入对象、结构体 进行 动态库 封装。
相关文章推荐
- c++实现0-1背包问题完整源码(动态…
- 实现基于C++的动态事件机制
- C++程序设计实践指导1.1删除序列中相同的数改写要求实现
- 算法:C++实现动态规划中的几个典型问题
- 红黑树的c++完整实现源码
- 仿MFC实现c++的按名动态创建对象功能
- C++ 实现动态定义三维内的数组
- 二维数组的动态分配和释放(C和C++实现)
- 归并排序的完整C++实现代码
- 用C/C++实现SMC动态代码加密技术 .
- c++简单的动态数组实现
- C++多线程定时器完整实现
- C++程序设计实践指导1.13自然数集中找合数改写要求实现
- 构造双向链表根据访问频度动态调整位置_C++实现
- 数据结构_队列_用链表动态建立释放节点实现队列各种操作_C++实现
- C++中的动态类型与动态绑定、虚函数、运行时多态的实现
- 动态可变字符数组的实现, 以及用于实现读取文件中的完整一行字符的功能
- C++动态数组实现栈
- C++容器嵌套实现动态二维数组
- C++模板实现动态顺序表(更深层次的深浅拷贝)与基于顺序表的简单栈的实现