WIN32 DLL中使用MFC
最近用WIN32 DLL,为了方便要用到MFC的一些库,又不想转工程,就网上找了很多方法,发现没有详细的介绍,有的也行不通,现在成功在WIN32 DLL中使用了MFC,记录一下以防以后用到忘记
一、修改预编译头文件(stdafx.h)
在stdafx.h文件中添加下面代码,包含一些MFC的头文件,这些可以在一个MFC工程中复制过来
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将为显式的 #include <afxwin.h> // MFC 核心组件和标准组件
#include <afxext.h> // MFC 扩展 #ifndef _AFX_NO_OLE_SUPPORT
#include <afxole.h> // MFC OLE 类
#include <afxodlgs.h> // MFC OLE 对话框类
#include <afxdisp.h> // MFC 自动化类
#endif // _AFX_NO_OLE_SUPPORT #ifndef _AFX_NO_DB_SUPPORT
#include <afxdb.h> // MFC ODBC 数据库类
#endif // _AFX_NO_DB_SUPPORT #ifndef _AFX_NO_DAO_SUPPORT
#include <afxdao.h> // MFC DAO 数据库类
#endif // _AFX_NO_DAO_SUPPORT #include <afxdtctl.h> // MFC 对 Internet Explorer 4 公共控件的支持
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC 对 Windows 公共控件的支持
#endif // _AFX_NO_AFXCMN_SUPPORT
二、修改编译配置
我使有的是VS2003
1、项目->属性->常规->MFC的使用->在静态库中使用MFC(动态或静态都可以)
2、链接器->输入->
因为编译的时候会因为链接的顺序问题导致链接错误,所以这里要改两个LIB的链接顺序
先在‘忽略指定库中’忽略掉这两个DLL,分别是uafxcw.lib和libcpmt.lib,如果是DEBUG工程,还需要填入libcmt.lib
再在'附加依赖项'中以uafxcw.lib libcpmt.lib的顺序填入
三、在你的主文件中加入代码
在最前面加入
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif #define new DEBUG_NEW /////////////////////////////////////////////////////////////////////////////
// global data // The following symbol used to force inclusion of this module for _USRDLL
#ifdef _X86_
extern "C" { int _afxForceUSRDLL; }
#else
extern "C" { int __afxForceUSRDLL; }
#endif
这样不用从CWinApp中派生一个类再外部定义来使用MFC的入口点,可以直接使用原来的写好的DllMain入口点
只是在链接那一块还是出了几个错误,
error LNK2005: "private: __thiscall type_info::type_info。。。
最后用的:
附加依赖项:msvcrtd.lib LIBCMTD.lib
忽略特定库:LIBCMTD.lib;msvcrtd.lib
编译通过了,MFC的类编译器也认识了
WIN32 DLL中使用MFC的更多相关文章
- 在WIN32 DLL中使用MFC库遇到的问题
今天写了一个DLL,DLL中用到的一个类里用到的MSXML的COM组件,所以在DLL中要包含afx.h头文件,也就不可避免的要用到MFC的类库了,但在编译时出现了错误:mfcs42d.lib(dllm ...
- 在WIN32 DLL中使用MFC
最近用WIN32 DLL,为了方便要用到MFC的一些库,又不想转工程,就网上找了很多方法,发现没有详细的介绍,有的也行不通,现在成功在WIN32 DLL中使用了MFC,记录一下以防以后用到忘记 一.修 ...
- win32 Dll 中添加afx.h 出现如下错误 error LNK2005: _DllMain@12 already defined
win32 Dll 中添加afx.h 出现如下错误 nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in ...
- 在共享DLL中使用MFC
使用VS2008,在项目属性中有一项MFC的使用,有三种设置: 1.使用标准Windows库 2.在共享DLL中使用MFC 3.在静态库中使用MFC 第一种顾名思义. ...
- 在共享DLL中使用MFC 和在静态库中使用MFC的区别
使用VS2008,在项目属性中有一项MFC的使用,有三种设置: 1.使用标准Windows库 2.在共享DLL中使用MFC 3.在静态库中使用MFC 第一种顾名思义. ...
- c++MFC工程修改在共享DLL中使用MFC为使用标准Windows库的解决办法
由于创建MFC工程时,默认是在共享DLL中使用MFC,如果将此选项改成使用标准Windows库,会报如下错误 c:\program files\microsoft visual studio 9.0\ ...
- MFC的使用——在共享DLL中使用MFC、在静态库中使用MFC(转)
原文转自 https://blog.csdn.net/albertsh/article/details/52838419 1.使用标准Windows库 使用WINDOWS SDK API库,不使用MF ...
- 在WIn32程序中使用MFC的CInternetSession运行异常,主要是因为获取目前应用程序名出错的解决办法
转载:http://group.gimoo.net/review/22564 头文件#include <afxinet.h"> 在非MFC工程中使用CInternetSessio ...
- Win32 DLL和MFC DLL 中封装对话框
现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题.这里我们从Win32 DLL和MFC DLL两个方面来分析并解决这个问题. ...
随机推荐
- (C#) 设定时间格式
private string GetCurrentDateTime() { return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") ...
- hibernateUtils
hibernate3.x版本 package hibernate_01; import org.hibernate.Session; import org.hibernate.SessionFacto ...
- 最最简单的~WordCount¬
sc.textFile("hdfs://....").flatMap(line =>line.split(" ")).map(w =>(w,1)). ...
- NeHe OpenGL教程 第十二课:显示列表
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 关于 Code First
第一感觉还是很新鲜的,你可以自由的控制数据结构. 比如,你想象oracle那样,给每个表增加4个字段,创建人,创建时间,更新人,更新时间.完全可以创建一个父类包含着四个属性(甚至可以把四个属性作为一个 ...
- Double-checked locking and the Singleton pattern--双重检查加锁失效原因剖析
以下内容摘取自http://stackoverflow.com/questions/11195389/out-of-order-writes-for-double-checked-locking Th ...
- JAVA取随机数,石头剪刀布实例
一.取随机数: import java.util.Random; //导入随机数 public class Test{ public static void main(String[] args){ ...
- 安装java开发环境jdk,安装JDK
JDK可以理解为翻译官,它将Java高级语言翻译为二进制执行. JDK可以编译文件,编译后的文件扩展名为.class. 只要能支持JDK的地方,JAVA就可以运行,这就是JAVA跨平台的性质. 我的是 ...
- 如何利用jQuery进行简单表单验证
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name=&qu ...
- Eclipse下快速打开本地文件插件EasyExplorer(转)
EasyExplorer 是一个类似于 Windows Explorer的Eclipse插件,它可以帮助你在不退出Eclipse的环境下浏览本地文件系统,类似的插件也有很多,但是本人喜欢使用这个版本 ...