您的位置:首页 > 编程语言 > C语言/C++

vc++.net编译问题

2008-09-19 10:46 274 查看
=================================================
EMS 编译过程问题
=================================================
问:编译过程中出现这样的错误怎么办?
c:/program files/microsoft visual
studio/vc98/mfc/include/afxv_w32.h(14) : fatal error C1189: #error :
WINDOWS.H already included.  MFC apps must not #include <windows.h>
答:
在出错文件的开头加上一句:#include "compat_mfc.h" 一般都能解决问题。具体原因不明。
[10:50 2007-3-12]
问:在链接过程中出现这样的错误怎么办?
updatevis.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE
Debug/updatevis.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe
答:添加上 _AFXDLL 的定义,具体方法是:
菜单:Project -> Settings
在 C/C++ 标签页的 Preprocessor definitions: 中添加上 _AFXDLL。
然后重新编译链接即可。
具体原因不明。
[15:51 2007-3-12]
=================================================
实时库相关问题
=================================================
问:为什么包含了 compat_onldb.h 后,printf 的输出不见了呢? [21:01 2007-5-10]
答:compat_onldb.h 中将标准输出重新定向了,printf 的输出可以在诊断信息程序(ems/exe/mmi/MailBull.exe)中查看。
[个人觉得不应该将输出信息重定向的代码放在实时库当中,这两个功能本来就是相互独立的。]
ems/user/include/melody/rtdbcore.h 中第 226 行:#define printf EmsPrn

int __cdecl printf(const char *, ...);
替换成了
void EmsPrn( char *szFormat,... );
=================================================
Alpha 机相关问题
=================================================
问:常说的 Alpha 机指的是什么?
答:常说的 Alpha 机是指 HP 出产的一系列机器,可选用 OpenVMS 或 Tru64 UNIX 操作系统。
参考:http://h18002.www1.hp.com/alphaserver/
实验室内有一台 AlphaServer DS10 即属于这个系列,使用固定 IP:192.10.10.128,常被简称为:128。
该机器安装的操作系统是有 digital UNIX 4.0F,即所谓的 Tru64 UNIX,或者 OSF1,
用 uname -a 可以得到结果:
OSF1 DS10 V4.0 1229 alpha
[18:41 2007-3-10]
根据2006年11月30日 HP 公司向广大 AlphaServer 用户发出的一封信
http://h18002.www1.hp.com/alphaserver/download/Alpha_Extended_Sales.pdf
HP 目前销售的 AlphaServer 系统,包括:GS1280、ES80、ES47、ES45、DS25、DS15A,
将在2007年4月27日后停止接受订单,2007年7月27日后停止发货,
2008年4月25日后停止接受已有系统的升级订单,2008年7月25日停止升级部件的发货,
但对这些机器的支持将至少持续到2012年。
[18:50 2007-3-10]
问:在 Alpha 机上安装和编译 Qt 需要注意的有?
答:
首先在解压缩后的 Qt 目录中 ./configure -thread -platform tru64-cxx -debug -no-stl
然后 make
期间如果遇到 ld: unresolved  isnan 则需要手动修改 qmake 目录下的 Makefile 在 LFLAGS= 后面加上 -lm
问:在 Alpha 机上编译或运行程序出现 unresolved symbols: vsnprintf 怎么办?
答:Compaq Tru64 UNIX 4.0F 的 libc 中没有 vsnprintf 和 snprintf 等函数,
但在 libdb 中有,因此需要在适当的位置上添加上 -ldb 的链接参数。
问:用 XManager 远程登录某些 UNIX 机器时无法用 root 用户怎么解决?
答:在 /etc/securettys 文件中增加一行,内容是运行 XManager 机器的 IP 再加上":0",例如:
192.10.10.50:0
可以参考文件中已有内容的格式。
=================================================
Qt 使用的相关问题
=================================================
问:Windows 下安装和编译 Qt 需要注意的有?
答:
一般没什么特别的,按照向导一步步来就行。
其中编译步骤比较费时间,因此最好可以找个没什么事情的时间装 Qt。
另外:要保证当前用户的配置目录(例如:C:/Documents and Settings/chenjia)中没有中文,一般只要
Windows 系统不是用的中文用户名就没事。
以前王皓师兄遇到过因为用户的配置目录有中文而在安装过程中出错的案例。
问:在 Qt 中如何才能弹出固定大小(即用户不能通过鼠标拖曳改变大小)的对话框?
答:
我用的方法是:
在该对话框类的构造函数中添加
setMaximumSize(width(), height());
setMinimumSize(width(), height());

setFixedSize(width(), height());
问:含有中文的字符串(char *)在 Qt 写的界面上显示时变为乱码怎么办?
答:
在 Qt 中,含有中文的字符串用于显示时需要用 QString::fromLocal8Bit 函数转换为 Unicode 编码。
另,在我们的程序中经常把 QString::fromLocal8Bit 定义为 _Q 宏,方便使用。
问:用 Qt 中的 QFile 和 QTextStream 读取中文文本文件用于显示时出现漏字现象怎么办?
答:
需要设置恰当的文本解码器(Codec),如以下代码段:
QFile file ( filename ); // Read the text from a file
if ( file.open( IO_ReadOnly ) ) {
QTextStream stream;
stream.setEncoding( QtextStream::Locale );
// set proper codec to display Chinese characters
QTextCodec *codec;
codec = QTextCodec::codecFromName("gb2312");
stream.setCodec(codec);
stream.setDevice( &file );
textInfo->setText( stream.read() ); // textInfo is a QTextEdit object
}
问:在 Qt 中如何获得一个字符串(QString)在某种字体(QFont)下输出后占据的矩形大小?
答:利用 QFontMetrics 类。
例如以下两个方法:
int QFontMetrics::width( const QString & str, int len = -1 ) const
int QFontMetrics::height() const
[16:49 2007-7-19]
问:如何用Qt弹出一个模态对话框?
答:
/* 对话框类构造函数的 parent 参数最好填上已有的某个窗口,不要填0。
   否则的话,至少出现任务栏上出现对话框对应按钮的现象 */
DataTableDlg *dlgTable = new DataTableDlg( this );
int nResult = dlgTable->exec();
delete dlgTable;
=================================================
开发工具基本问题
=================================================
问:VC6 编译程序时偶尔会出现编译过程无法结束,只能杀进程解决,这是怎么回事?
答:很可能是 VC6 自身的 Bug,一般情况下安装 Visual Studio 的 SP6 以后就正常了。
问:怎样判断一台机器上的 VC6 有没有打补丁(SP, Service Packs)
答:可以在命令行(控制台)下运行 VC 的编译器:cl,查看显示的版本信息:
C:/Documents and Settings/Administrator>cl
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
usage: cl [ option... ] filename... [ /link linkoption... ]
其中 12.00.8804 表示 VC6 SP6
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
usage: cl [ option... ] filename... [ /link linkoption... ]
其中的 12.00.8168 表示没有装过 SP 的 VC6
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息