跟大家分享一个DLL导出类的使用
来源:互联网 发布:c语言指定位取反 编辑:程序博客网 时间:2024/05/16 05:06
折腾了好几个小时。
开发环境是:VS2010
1.首先建立了一个空解决方案(MyWork)
2.添加一个MFC工程,主要用来测试动态库(MyMfcTest)
3.然后建立一个动态库(MyDllTest),勾上MFC头文件使用,项目自动生成如下代码
.h文件是。其他代码可以删掉
#ifdef SERIALPORT_EXPORTS
#define SERIALPORT_API __declspec(dllexport)
#else
#define SERIALPORT_API __declspec(dllimport)
#endif
// 此类是从 MyDllTest.dll 导出的
class SERIALPORT_API CMyDllTest
{
CMyDllTest(void);
};
.cpp文件是只保留如下代码:
#include "stdafx.h"
#include "MyDllTest.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
4.然后在类中添加一个测试方法
.h文件中声明一个 CString test();
.cpp文件中实现test方法代码如下
CMyDllTest::test()
{
CString temp = "abc你好00123";
return temp;
}
在这个过程中发现 temp初始化那里报错,原因是属性那里要把字符改为多字节。
5.Debug生成,然后release生成
6.然后在MFC项目中在CMyMfcTest类中
#include "../MyDllTest/MyDllTest.h"包含头文件
然后链接库
#ifdef _DEBUG
#pragma comment(lib,"../Debug/MyDllTest.lib")
#else
#pragma comment(lib,"../Release/MyDllTest.lib")
#endif
7.然后在InitInstance方法中声明类。然后使用方法test
Debug生成的时候发现说使用外部符号,原因是在Debug模式下的属性---C++ ---代码生成---运行库,改为多线程DLL(/MD)
生成成功,断点返回值正常
8。Realse模式下生成也是报错。原因与Debug有所区别,在属性中---C++ ---代码生成---运行库,要改为多线程(/MT)。配置属性--常规--MFC的使用,改为 使用标准 Windows 库。生成成功,断点返回值正常
希望大家看到这个帖子,少走弯路。如有不妥之处,欢迎指出。高手莫笑!
- 跟大家分享一个DLL导出类的使用
- 分享给大家一个简单的数据导出excel类
- 一个存储过程的 事务模板 跟大家分享
- 跟大家分享一下directUI的心得
- 跟大家分享一下directUI的心得
- (数据库未打开错误)跟大家分享一个Oracle问题的解决办法
- 跟大家分享了一个好用windows远程连接linux的小工具SecureCRT
- 一个各学校就业分析、各公司待遇和发展前景的好网站,跟大家分享一下
- 经历了一个最无聊的义工活动(三点内容想跟大家分享一下)
- 跟大家分享一个非常精简的夏令时转换程序,程序是通用的可以在51、430、PIC、瑞萨系列的单片机上使用
- 分享一个导出excel的工具类
- 跟大家分享一个提升SQL语句的心得—快速算出是否属于最新单价
- 在CSDN论坛上看到一个数据库帖子,觉得挺有意思的,特转过来跟大家分享
- 跟大家分享几个MySQL数据库备份的小窍门
- 再跟大家分享一下AT24C01~AT24C256的读写程序
- 我的微博跟大家分享一下
- makefile的一点心得, 转过来跟大家分享一下 ------ %:
- 自己遇到的几个问题,跟大家分享一下
- RMAN 系列(四) ---- RMAN 备份(引用)
- EditorGridPanel中的ComboBox触发不了afteredit
- 索引的创建与好处
- Overview of SW-CMM
- 1863 畅通工程
- 跟大家分享一个DLL导出类的使用
- BNU 0817 J. The More The Better
- 使用selector修改TextView中字体的颜色
- 静态类 内部 用法 作用
- 推荐一系列优秀的Android开发源码
- 黑马程序员——代码实现进制转换
- asp.net中通过form表单submit提交到后台的实例
- StarDict词库
- ubuntu10.04下配置Apache+PHP+MySQL