<b>在非MFC程序中引用CString</b>[VC/C++编程]
本文“<b>在非MFC程序中引用CString</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
CString在当今软件计划界里还是小闻名望的,说它是MFC中利用的最多的类一点也不过,但是在利用sdk编windows程序的时刻,确不能操纵CString类,只能用sdk的运行时库,比方strlen,strcpy,strstr等等,本文谈论的是在非mfc程序中利用CString类的办法,算是个引子,假若有更好的实现办法,欢送大家谈论.
为了利用CString类,首先源文件必须是以cpp末尾的,这是因为vc默许对差别的扩大名采取差别的编译办法和错误查抄,mfc的支持文件Afx.h只有由cpp为扩大名的文件包含才可以正常编译.关于exe和库要采取差别的方法.下面辨别谈论:
1、在非dll大概lib的工程里,利用CString非常简单,只要两步:
1、关于没有包含<Windows.h>的stdafx.h中,只要包含了afx.h便可,而关于已经包含了<windows.h>的stdafx.h, 一定需求保证afx.h在windows.h之前被包含.别的由于默许的掌握台程序采取的单线程运行库,我们要把它改成多线程库,这些工作只要在stdafx.h中举行改正便可以了(具体信息可以参考候捷的<<mfc 深化浅出>>),我利用的一个stdafx.h的例子以下(这是一个从向导生成的win32位GUI的程序的stdafx.h改正的):
// stdafx.h
#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <afx.h> // 加在这里
// Windows Header Files:
#include <windows.h>
// C RunTime Header Files
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#ifdef _DEBUG
#pragma comment(lib, "libcmtd.lib")
#else
#pragma comment(lib, "libcmt.lib")
#endif
// Local Header Files
#endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
这样便可以在程序中正常利用CString类了.
2、在dll大概lib的工程中,由于afx.h默许带了一个DllMain,导致要利用CString类需求几个步骤.
1、首先和掌握台程序一样,假如编译环境设置了采取单线程库, 要改成多线程库,这个可以从工程属性里举行改正,具体信息可以参考候捷的<<mfc 深化浅出>>. 下面给出的是我常用的方法,可以直接把它复制到工程里利用:
#ifdef _DEBUG
#pragma comment(lib, "libcmtd.lib")
#else
#pragma comment(lib, "libcmt.lib")
#endif
2、工程目录下成立一个DLLMODUL.CPP文件,并且把它加入到当前工程中.
3、翻开DLLMODUL.CPP文件,编辑这个文件为这样:
#include "stdafx.h"
#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
4、翻开stdafx.h,把afx.h包含在windows.h前面.目前可以正常的利用CString了.
以上是“<b>在非MFC程序中引用CString</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |