标签: visual-c++-6

在Windows 8.1中运行Visual Studio 6 C++

我最近将我的系统迁移到了Windows 8.1.不幸的是,像其他人一样,我无法启动Visual Studio 6.该软件在启动时崩溃(启动画面).

我知道有一些解决方法,能够在较新的IDE中使用vc6进行编译,但这对我不起作用,因为我必须编译大量的项目,而且我无法承担1到1修改所有项目文件的费用. ..

我已经看到了答案:vc6太旧了,不支持等等......我知道这一切!但迁移大量代码可能需要很长时间,而现在我们没有其他解决方案!

由于vc6在Windows 8上运行得很好,我确信通过一些小技巧我们可以设法让它在8.1下运行,但我还没弄清楚怎么样!

有没有人设法在Windows 8.1上启动Visual Studio 6?

任何帮助都感激不尽!谢谢.

c++ visual-c++-6 windows-8 windows-8.1

8
推荐指数
1
解决办法
2万
查看次数

VC6:致命错误C1083:无法打开包含文件:'stdint.h'

在VC6中编译时,我收到错误:

(致命错误C1083:无法打开包含文件:'stdint.h':没有这样的文件或目录)

任何人都可以解释为什么我收到此错误?

visual-c++-6 stdint

8
推荐指数
1
解决办法
2万
查看次数

用户断点无处可去

我正在调试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-一个错误..这个数组与我在发生错误时释放内存的点无关.这使得发现更难.. :(

c++ debugging visual-c++-6 visual-c++

7
推荐指数
1
解决办法
4904
查看次数

编译过程

谁能解释编译是如何工作的?

我似乎无法弄清楚编译是如何工作的..

更具体地说,这是一个例子..我正在尝试在MSVC++ 6中编写一些代码来加载Lua状态.

我已经:

  • 设置库的其他目录并将文件包含到正确的目录中
  • 使用extern"C"(因为Lua只是C,所以我听说)
  • 包括正确的头文件

但是我仍然在MSVC++ 6中遇到一些关于未解析的外部符号的错误(对于我使用的Lua函数).

尽管我想知道如何解决这个问题并继续前进,但我认为如果我了解所涉及的基础过程对我来说会好得多,所以有人可能会为此写一个很好的解释吗?我想知道的是这个过程..它看起来像这样:

步骤1:

  • 输入:源代码
  • 过程:解析(可能在这里添加更多细节)
  • 输出:这里输出的是什么..

第2步:

  • 输入:无论从步骤1输出什么,加上可能还需要其他任何东西(库?DLL?.so?.lib?)
  • 过程:无论输入做什么
  • 输出:无论输出是什么

等等..

谢谢..

也许这将解释什么是符号,究竟什么是"链接",什么是"对象"代码或者其他什么.

谢谢..抱歉这样的菜鸟..

PS这不一定是语言特定的..但随意用你最舒服的语言表达它.. :)

编辑:所以无论如何,我能够解决错误,事实证明我必须手动将.lib文件添加到项目中; 只需在IDE设置或项目设置中指定库目录(.lib所在的位置)不起作用..

但是,下面的答案在一定程度上帮助我更好地理解了这个过程.非常感谢!如果有人还想写一篇详尽的指南,请做.. :)

编辑:仅供参考,我发现一篇作者(Mike Diehl)的两篇文章很好地解释了这一点.:) 检查编译过程:第1部分 检查编译过程:第2部分

compiler-construction lua visual-c++-6 visual-c++

7
推荐指数
2
解决办法
2529
查看次数

在Emacs中使用Visual Studio 6 C++编译器

我刚刚开始使用c ++开发,我想使用emacs编写代码,然后使用visual studio 6编译器在emacs中编译和运行它.我已经搜索了一下,但似乎无法找到解释这是如何完成的.有什么指针吗?

谢谢你的帮助,

约尔格

c++ emacs visual-c++-6 visual-studio

7
推荐指数
1
解决办法
1563
查看次数

如何在VC6监视窗口中获取变量的完整字符串值?

我想在VC6监视窗口中获取char []变量的完整值,但它只显示截断的版本.我可以从调试内存窗口复制该值,但包含十六进制和字符串值的混合行.当然还有更好的方法吗?

c++ debugging visual-c++-6

6
推荐指数
1
解决办法
2871
查看次数

是时候和VC6编译器说再见了吗?

最近我面临着指向VC6编译器的问题.

其中很少是:

  1. 函数try-block不起作用.相关问题
  2. 课堂常数不起作用.
  3. __FUNCTION_(获取函数名称的宏)不起作用
  4. 最新添加的是它不允许将void函数作为for_each的一部分传递.

以下示例未使用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相关的任何其他问题.解决这些问题的任何解决方法?还是时候改变编译器了?

c++ compiler-construction visual-c++-6

6
推荐指数
3
解决办法
3287
查看次数

无法从'const wchar_t*'转换为'_TCHAR*'

_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*'

什么似乎是问题,我该如何解决?

c++ porting visual-c++-6 visual-studio-2008

6
推荐指数
2
解决办法
2万
查看次数

为什么fopen无法打开存在的文件?

我在Windows XP上使用Visual Studio 6(是的,我知道它已经老了)构建/维护C++ DLL.我遇到了fopen无法打开现有文件的问题,它总是返回NULL.

我试过了:

  • 通过将两者都设置为零然后再次检查它们来检查errno和_doserrno,两者都保持为零,因此GetLastError()报告没有错误.我知道fopen在遇到根据C标准的错误时不需要设置errno.
  • 硬编码文件路径,这不是相对的.
  • 尝试了另一台开发者机器,结果相同.

真正奇怪的是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)

c++ windows file-io fopen visual-c++-6

6
推荐指数
2
解决办法
1万
查看次数

全局设置编译器标志(/Zm 内存限制)

在编译一些复杂的模板时,我有时会得到:

致命错误 C1076:编译器限制:达到内部堆限制;使用 /Zm 指定更高的限制

我知道我可以去项目设置并指定例如/Zm500给编译器更多的内存(更多信息/Zm可以在这里找到)。然而,它非常麻烦,我更喜欢全局设置默认限制。有什么办法吗?

或者,是否有任何方法可以使用源文件的编译指示或其他注释来指定此特定标志?这样,它也可以在具有潜在不同设置的机器之间实现便携。

我使用的是 Visual Studio 2008,如果它也适用于 Visual C++ 6.0,我不会介意。

visual-c++-6 visual-studio-2008 visual-studio

6
推荐指数
1
解决办法
7714
查看次数