非MFC DLL的函数,类的导出与调用
2013-11-18 09:59
330 查看
非MFC DLL的导出与调用
Last Edit 2013/11/18
一.DLL的分类
Visual C++ 支持三大DLL
1.非MFC DLL
2.MFC DLL
3.MFC 扩展 DLL
二.生成导出函数DLL
在头文件中加入如下语句:
在cpp在加入函数实现代码
如果要看函数是否成功导出的话,可以使用用VC++自带的工具Depends
三、动态调用与静态调用
将上面程序所生成的DLL,Lib 文件拷到新建的工程目录下,方便调用。
1.动态调用
所谓的动态调用指的是,程序员可以自主的决定在哪段代码中调用DLL中的函数,释放DLL。该过程主要用到3个Windows API
类的导出
Last Edit 2013/11/18
一.DLL的分类
Visual C++ 支持三大DLL
1.非MFC DLL
2.MFC DLL
3.MFC 扩展 DLL
二.生成导出函数DLL
在头文件中加入如下语句:
#ifndef DLLTEST_H #define DLLTEST_H extern "C" _declspec(dllexport) add(int a,int b); #endif
在cpp在加入函数实现代码
#include "DllTest.h" int add(int a,int b) { return a+b; }
如果要看函数是否成功导出的话,可以使用用VC++自带的工具Depends
三、动态调用与静态调用
将上面程序所生成的DLL,Lib 文件拷到新建的工程目录下,方便调用。
1.动态调用
所谓的动态调用指的是,程序员可以自主的决定在哪段代码中调用DLL中的函数,释放DLL。该过程主要用到3个Windows API
HMODULE LoadLibrary(libpathName)
FARPROC GetProcAddress(HMODULE hModule, // DLL模块句柄 LPCSTR lpProcName // 函数名)
FreeLibrary(HMODULE)
#include <stdio.h> #include <windows.h> typedef int(*lpAddFun)(int ,int); void main() { lpAddFun addFun; HINSTANCE hDll=LoadLibrary("DllTest.dll"); if (hDll!=NULL) { addFun=(lpAddFun)GetProcAddress(hDll,"add"); if (addFun) { int res=addFun(1,2); printf("%d",res); } } FreeLibrary(hDll); }静态调用
#include <stdio.h> #pragma comment(lib,"DllTest.lib") extern "C" _declspec(dllimport) add(int,int); void main() { printf("%d",add(1,4)); }
类的导出
class _declspec(dllexport) className{ .... }
相关文章推荐
- .PIG File
- 未命名 1
- matlab 中保存某几个变量
- android的三种传输方式及解析
- linux内存cached释放
- winform 使用委托 实现多线程访问控件
- [Warning] '--default-character-set' is deprecated and will be removed in a future release
- Java 类成员初始化(摘自《java编程思想》)
- Android之路该如何走
- android 透明背景黑色字图片 保存得到本地 显示黑色图片
- C/C++学习的50个经典网站
- asp.net生成静态后冗余代码,去掉viewstate生成的代码
- Xcode 4-PBXcp error修复-No such file or directory
- Resumable.js – 基于 HTML5 File API 的文件上传
- Android中对话框显示需要判断的前提条件
- 基于Fast Bilateral Filtering 算法的 High-Dynamic Range(HDR) 图像显示技术。
- SQL中Group By的使用(转)
- Mac OS X 10.7下找不到~/Library/Application Support的解决方案
- 时间函数gettimeofday()
- 数据结构6 && 实验六:树的操作