我发现定义WIN32_LEAN_AND_MEAN的解释"通过排除一些不太常用的API来减小Win32头文件的大小".在其他地方,我读到它可以加快构建过程.
那么WIN32_LEAN_AND_MEAN究竟排除了什么?我应该关心这个预处理器指令吗?它是否加快了构建过程?
我还在项目中看到了一个预处理器指令,其名称与额外精益有关.这是我应该知道的另一个深奥的预处理器咒语吗?
当我运行如下的简单代码时,我有两个错误如下:
#include <iostream>
#include <string>
using namespace::std;
template <class Type>
class Stack
{
public:
Stack (int max):stack(new Type[max]), top(-1), maxsize(max){}
~Stack (void) {delete []stack;}
void Push (Type &val);
void Pop (void) {if (top>=0) --top;}
Type& Top (void) {return stack[top];}
//friend ostream& operator<< (ostream&, Stack&);
private:
Type *stack;
int top;
const int maxSize;
};
template <class Type>
void Stack <Type>:: Push (Type &val)
{
if (top+1<maxsize)
stack [++top]=val;
}
Run Code Online (Sandbox Code Playgroud)
错误:
MSVCRTD.lib(crtexew.obj):错误LNK2019:
_WinMain@16函数中引用的未解析的外部符号___tmainCRTStartup
我该怎么办?
我正在尝试使用VS express 2010编译旧项目,但是我收到此错误:
致命错误RC1015:无法打开包含文件'afxres.h'.从这段代码
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
Run Code Online (Sandbox Code Playgroud)
我已经安装了Windows SDK,但没有任何成功.
谢谢!
我开发了一个依赖于DLL文件的应用程序.当我调试我的应用程序时,应用程序会抱怨:
"此应用程序无法启动,因为找不到xxx.dll."
所以我必须将DLL文件复制到与我的.vcproj文件相同的目录中.
有没有办法设置项目在(最好)一些相对路径或(不是首选)某些绝对路径中查找DLL文件?
与我们如何在项目设置中设置包含和库路径的概念类似.
我的意思是当我调试我的应用程序(点击F5)时会弹出上面的错误.
我正在使用CGAL的库,在我的代码编译的链接阶段产生了很多这种形式的链接警告:
warning LNK4099: PDB 'vc80.pdb' was not found with 'gmp-vc80-mt-sgd.lib' or at 'vc80.pdb'; linking object as if no debug info
Run Code Online (Sandbox Code Playgroud)
如何在Visual C++/Studio 2008下关闭此特定链接器警告?
请注意,我对我正在使用的外部(CGAL)库没有任何控制权.我不能/不想进入重新编译外部库.因此,需要在我的最后修复消息.
我在编写一个检查字符串是否为数字的函数时遇到了很多麻烦.对于我正在编写的游戏,我只需要检查我正在阅读的文件中的一行是否是一个数字(我会知道这是一个参数).我编写了以下功能,我相信它工作顺利(或者我不小心编辑了以阻止它,或者我是精神分裂症或Windows是精神分裂症):
bool isParam (string line)
{
if (isdigit(atoi(line.c_str())))
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud) 我在Visual Studio 2008中创建了一个新的C++项目.还没有编写代码; 仅更改了项目设置.
当我编译项目时,我收到以下致命错误:
致命错误LNK1104:无法打开文件'C:\ Program.obj'
我正在阅读另一个关于两行代码效率的问题,OP说他看了代码背后的程序集,两行在程序集中是相同的.除了离题之外,我如何查看编译程序时创建的汇编代码.
我正在使用Microsoft的Visual C++,但我也想知道是否可以查看用Visual Basic编写的代码后面的程序集.
那么,如何查看用C++和Visual Basic等高级语言编写的程序背后的汇编代码?
假设我只使用它们用于"普通"GUI程序(没有COM,没有ActiveX,没有什么花哨的东西),我将在ATL和MFC之间看到的根本区别是什么,以帮助我找出使用哪一个?
我在网上做了一些搜索,但最终没有一个答案真的回答了我的问题:
http://msdn.microsoft.com/en-us/library/bk8ytxz5(v=vs.80).aspx:
"ATL是一种快速,简便的方法,可以在C++中创建COM组件并保持较小的占用空间.如果您不需要MFC自动提供的所有内置功能,请使用ATL创建控件."
没有真正回答我的问题,因为:
我不和COM合作.
这是否意味着MFC 是不是快吗?为什么/怎么样?
"MFC允许您创建完整的应用程序,ActiveX控件和活动文档.如果您已经使用MFC创建了一个控件,您可能希望继续在MFC中进行开发.在创建新控件时,如果您不需要,请考虑使用ATL所有MFC的内置功能."
也不回答我的问题,因为:
我甚至不知道ActiveX 是什么.
看起来微软似乎不鼓励使用MFC,但我无法弄清楚原因.
MFC的"内置功能" 到底是什么ATL没有提供?
一般来说,这不能回答我的问题,因为它没有解释它们背后的缺点和原因.
因为直接或间接,一切似乎都链接回上一页:
如何决定是否将ATL,MFC,Win32或CLR用于新的C++项目?
"ATL和MFC在两者之间做出决定有点棘手. [[不开玩笑!]] 我会引用你的MSDN页面进行选择,以便在它们之间作出决定."
显然,这不能回答我的问题.:)
http://www.codeguru.com/forum/archive/index.php/t-64778.html
等等
我目前观察到的(在过去几天内,在尝试学习两者时):
但它们之间似乎没有任何架构差异:
BEGIN_MSG_MAP与BEGIN_MESSAGE_MAP...大不了)CWndvs.CWindow但是,如果除了编译时与运行时方面之外没有真正的区别,那么为什么它们都存在呢?其中一个不应该足够吗?
我在这里错过了什么?
如何检测Visual Studio 2012的Visual C++ Redistributable是否已安装?
我试过谷歌,没有人问这个问题,惊喜!