我最近将我的系统迁移到了Windows 8.1.不幸的是,像其他人一样,我无法启动Visual Studio 6.该软件在启动时崩溃(启动画面).
我知道有一些解决方法,能够在较新的IDE中使用vc6进行编译,但这对我不起作用,因为我必须编译大量的项目,而且我无法承担1到1修改所有项目文件的费用. ..
我已经看到了答案:vc6太旧了,不支持等等......我知道这一切!但迁移大量代码可能需要很长时间,而现在我们没有其他解决方案!
由于vc6在Windows 8上运行得很好,我确信通过一些小技巧我们可以设法让它在8.1下运行,但我还没弄清楚怎么样!
有没有人设法在Windows 8.1上启动Visual Studio 6?
任何帮助都感激不尽!谢谢.
在VC6中编译时,我收到错误:
(致命错误C1083:无法打开包含文件:'stdint.h':没有这样的文件或目录)
任何人都可以解释为什么我收到此错误?
我正在调试MS VC++ 6.0中的一些代码.出于某种原因,在我想要删除一些动态分配的内存的某个点上,它会中断并且我得到一个弹出消息框,说"用户断点从代码中调用等等",然后出现反汇编窗口,然后我弹出看到
*memory address* int 3
Run Code Online (Sandbox Code Playgroud)
奇怪的是,代码中有NOWHERE,我正在调用这样的汇编指令(我认为asm int 3是x86的硬件中断命令?)..
可能是什么导致了这个?
编辑:答案:我的代码是"走出末端"的数组,但只在Visual Studio调试标记的位置使用0xFDFDFDFD,这被称为NoMan'sLand栅栏..我认为它也称为Off-by-一个错误..这个数组与我在发生错误时释放内存的点无关.这使得发现更难.. :(
谁能解释编译是如何工作的?
我似乎无法弄清楚编译是如何工作的..
更具体地说,这是一个例子..我正在尝试在MSVC++ 6中编写一些代码来加载Lua状态.
我已经:
但是我仍然在MSVC++ 6中遇到一些关于未解析的外部符号的错误(对于我使用的Lua函数).
尽管我想知道如何解决这个问题并继续前进,但我认为如果我了解所涉及的基础过程对我来说会好得多,所以有人可能会为此写一个很好的解释吗?我想知道的是这个过程..它看起来像这样:
步骤1:
第2步:
等等..
谢谢..
也许这将解释什么是符号,究竟什么是"链接",什么是"对象"代码或者其他什么.
谢谢..抱歉这样的菜鸟..
PS这不一定是语言特定的..但随意用你最舒服的语言表达它.. :)
编辑:所以无论如何,我能够解决错误,事实证明我必须手动将.lib文件添加到项目中; 只需在IDE设置或项目设置中指定库目录(.lib所在的位置)不起作用..
但是,下面的答案在一定程度上帮助我更好地理解了这个过程.非常感谢!如果有人还想写一篇详尽的指南,请做.. :)
编辑:仅供参考,我发现一篇作者(Mike Diehl)的两篇文章很好地解释了这一点.:) 检查编译过程:第1部分 检查编译过程:第2部分
我刚刚开始使用c ++开发,我想使用emacs编写代码,然后使用visual studio 6编译器在emacs中编译和运行它.我已经搜索了一下,但似乎无法找到解释这是如何完成的.有什么指针吗?
谢谢你的帮助,
约尔格
我想在VC6监视窗口中获取char []变量的完整值,但它只显示截断的版本.我可以从调试内存窗口复制该值,但包含十六进制和字符串值的混合行.当然还有更好的方法吗?
最近我面临着指向VC6编译器的问题.
其中很少是:
以下示例未使用VC6编译器进行编译.它说"错误C2562:'()':'void'函数返回一个值".看起来VC6不喜欢将void函数传递给for_each.
class Temp
{
public:
Temp(int i):m_ii(i)
{}
int getI() const
{
return m_ii;
}
void printWithVoid()
{
cout<< "i = "<<m_ii<<endl;
}
bool printWithBool()
{
cout<< "i = "<<m_ii<<endl;
return true;
}
private:
int m_ii;
};
int main(void)
{
std::vector<Temp> arrTempObjects;
arrTempObjects.push_back(Temp(0));
arrTempObjects.push_back(Temp(2));
//Doesnot work, compiler error
std::for_each(arrTempObjects.begin(), arrTempObjects.end(), std::mem_fun_ref(&Temp::printWithVoid));
//Works
std::for_each(arrTempObjects.begin(), arrTempObjects.end(), std::mem_fun_ref(&Temp::printWithBool));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您是否遇到过与VC6.0相关的任何其他问题.解决这些问题的任何解决方法?还是时候改变编译器了?
_TCHAR* strGroupName = NULL;
const _TCHAR* strTempName = NULL;
//Assign some value to strTempName
strGroupName = _tcschr(strTempName, 92) //C2440
Run Code Online (Sandbox Code Playgroud)
在VS2008中编译此代码时,我在上面的行中收到错误.在VC6中它编译得很好.
错误C2440:'=':无法从'const wchar_t*'转换为'_TCHAR*'
什么似乎是问题,我该如何解决?
我在Windows XP上使用Visual Studio 6(是的,我知道它已经老了)构建/维护C++ DLL.我遇到了fopen无法打开现有文件的问题,它总是返回NULL.
我试过了:
真正奇怪的是CreateFile工作,可以使用ReadFile读取文件.我们相信这适用于发布版本,但是我们也在应用程序的其他方面看到了一些非常奇怪的行为,我们不确定这是否相关.
代码在下面,我没有看到任何奇怪的东西,它看起来很标准我.源文件在短短半年内没有改变.
HRESULT CDataHandler::LoadFile( CStdString szFilePath )
{
//Code
FILE* pFile;
if ( NULL == ( pFile = fopen( szFilePath.c_str(), "rb") ) )
{
return S_FALSE;
}
//More code
}
Run Code Online (Sandbox Code Playgroud) 在编译一些复杂的模板时,我有时会得到:
致命错误 C1076:编译器限制:达到内部堆限制;使用 /Zm 指定更高的限制
我知道我可以去项目设置并指定例如/Zm500给编译器更多的内存(更多信息/Zm可以在这里找到)。然而,它非常麻烦,我更喜欢全局设置默认限制。有什么办法吗?
或者,是否有任何方法可以使用源文件的编译指示或其他注释来指定此特定标志?这样,它也可以在具有潜在不同设置的机器之间实现便携。
我使用的是 Visual Studio 2008,如果它也适用于 Visual C++ 6.0,我不会介意。
visual-c++-6 ×10
c++ ×7
debugging ×2
visual-c++ ×2
emacs ×1
file-io ×1
fopen ×1
lua ×1
porting ×1
stdint ×1
windows ×1
windows-8 ×1
windows-8.1 ×1