问题标签 [visual-c++-6]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2670 浏览

visual-c++ - 编译过程

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

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

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

我已经:

  • 设置库的附加目录并将文件包含到正确的目录
  • 使用了 extern "C" (因为 Lua 只是 C 或者我听说的)
  • 包含正确的头文件

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

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

第1步:

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

第2步:

  • 输入:步骤 1 输出的任何内容,以及可能需要的任何其他内容(库?DLL?.so?.lib?)
  • 过程:对输入所做的任何事情
  • 输出:输出什么

等等..

谢谢..

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

谢谢。。对不起,我是个菜鸟。。

PS这不一定是特定语言的..但是请随意用您最熟悉的语言表达它.. :)

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

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

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

0 投票
4 回答
699 浏览

c++ - VC6和VC7中判断函数是否有void返回类型的需要方法

以下 C++ 代码可以为 GNU g++、LLVM 和我扔给它的所有其他 C++ 编译器正确编译和运行,Microsoft VC6 和 VC7 除外:

对于 VC6 和 VC7,编译失败并报错:

与其争论什么编译器是正确的优点,我如何使用 VC6 和 VC7 从模板函数中确定函数是否具有 void 返回类型?

0 投票
9 回答
1246 浏览

c++ - VC++ 6中“for循环”的终止条件是否刷新?

终止条件部分“stlVector.size()”是否考虑了“stlVector.erase(...)”?换句话说,每次循环迭代都会刷新 stlVector.size() 吗?我现在无法测试它,所以我在这里发布了一个问题。

提前谢谢!

最好的祝福,

正补

0 投票
3 回答
37151 浏览

c++ - 在任何情况下 new 都会返回 NULL 吗?

我知道根据 C++ 标准,如果 new 无法分配内存,它应该抛出 std::bad_alloc 异常。但我听说一些编译器,如 VC6(或 CRT 实现?)不遵守它。这是真的 ?我问这个是因为在每个新语句之后检查 NULL 会使代码看起来非常难看。

0 投票
2 回答
7071 浏览

debugging - 如何在 VC++ 6 中调试“调试断言失败”

我想知道如何调试以下错误:

我对使用 VC++ 6 进行 Windows 开发很陌生……有 valgrind 或类似的东西吗?tomtoprog 代码不是我写的,而且相当混乱......所以像 valgrind 这样的东西会让我的生活更轻松......

提前致谢!

最好的祝福,

正补品

0 投票
4 回答
6156 浏览

visual-c++ - 使 MFC 应用程序国际化

我这里有几个大型 MFC 应用程序,将它们转换成任何其他格式是不可能的。我们正在向其他市场扩张,并希望使这些应用程序能够在其他语言和文化中运行。

到目前为止,我偶尔会找到关于如何处理 Visual C++ 版本 6 的参考资料,其中提到 MFC 的更高版本具有额外的相关功能。搜索 MSDN 为我提供了有关如何将应用程序转换为 Unicode 的说明,我们已经这样做了。我在 MSDN 上找不到任何关于如何在 Unicode 中使语言成为多语言的内容,只有一些使用 Google 的旧东西,以及一本关于使用 VC++6 国际化的书。(我们现在在 XP 和 Vista 上使用 Visual Studio 2008。)

我没有声称我的 Google-fu 的力量,并且很高兴被引导到我错过的东西。

使用VC++6的方法是否合理,还是应该使用以后的特性?

如果我应该在此之后使用功能,我在哪里可以找到对它们的参考?

除了设置语言环境、将所有字符串转换为资源以及以不同语言复制资源之外,我还有什么需要担心的吗?

我可以找到更多关于 .NET 国际化的信息,但我对 .NET 缺乏经验。我会发现哪些适用于 VC++ 和 MFC?

编辑:我在尝试将 Unicode 字符串放入字符串表资源时遇到了困难。(据我所知,Unicode 字符串需要使用文本编辑器以 L"0x0034" 形式输入到 .rc 文件中。我还没有找到资源编辑器的方法来做到这一点。)有什么提示吗?我可以使用 VC++ 和 MFC 在 VS2008 中使用任何其他资源吗?

编辑:微软论坛上的某个人建议我在记事本中打开有问题的 .rc 文件,并将其保存为 Unicode。不幸的是,这似乎并不能修复对话框,尽管字符串表似乎在日语中工作。

0 投票
4 回答
565 浏览

networking - 串行通讯在 WinXP 中死机

一点历史:我们有一个应用程序,最初是在很多年前编写的(1998 年是 PVCS 的第一个日期,但该应用程序比它早 5 年,因为它最初是一个 DOS 程序)。此应用程序通过串行与硬件进行通信。当我们使用 Windows XP 时,我们开始收到应用程序在运行一小段时间后死机的报告。似乎串行通讯刚刚“死亡”,应用程序处于卡住状态。从这种情况中恢复的唯一方法是重新启动应用程序。

我能找到的关于这个问题的唯一信息显然是 Windows 消息系统会错过接收到的信息,缓冲区会填满,系统会卡住。这段信息被留在了一个旧的word文档中,但没有证据支持这一点。它还提到这仅在高波特率 (115200+) 下普遍存在。

解决方案是为客户提供USB->串行转换器以及硬件。

今天:我们正在开发一个新版本的硬件,它将在网络和串行端口上运行。因此,为了让我能够处理网络代码,减去我们使用VSCOM NetCom113设备的实际硬件。它还在用户(即:我的)机器上安装了一个虚拟通信端口。

现在我已经将网络代码与应用程序集成,看起来 NetCom 设备表现出与物理 commport 相同的行为。这是不可取的,因为我需要应用程序运行时间超过 ~30 秒。

谷歌发现我们遇到的零问题。

我想知道:

  • 有谁之前经历过这个吗?如果是这样,您做了什么来解决/解决问题?
  • 有没有人对文档的原始作者是否正确以及我可以做些什么来测试该理论有任何建议?

不幸的是,我无法发布代码,因为串行代码与系统的其余部分紧密耦合,但如果您对此有疑问,我可以回答有关它的问题。

更新:

  • 代码是使用 Win32 Comm 例程编写的 - 所以我使用的是 CreateFile、ReadFile。还有对 GetOverlappedResult 的明智调用。
  • 它本身并没有挂起,只是通讯停止了。您可以访问菜单,单击按钮,但没有任何东西可以与连接的硬件交互。使用realterm你可以看到没有数据进出。
  • 我认为对 windows 消息的引用是问题是 windows 内部的。数据已经到达,但内核错过了它,因此没有告诉系统的其余部分。
  • 不使用流量控制。
  • 编写一个“简单”的测试很困难,因为代码是紧密耦合的,底层协议非常复杂,需要大量工作。
0 投票
3 回答
455 浏览

visual-studio-2008 - 将新的 MS C++ 编译器与旧的 Visual Studio 一起使用

我想将最近的 MS C++ 编译器(我需要 TR1)与旧 IDE(Visual C 6.0)一起使用。我听说我只能下载免费的命令行 MS C++ 编译器。是否可以?我可以在旧 IDE 中使用新编译器吗?如果是这样,可能会出现哪些其他问题?

我想保留 VS6,因为我很熟悉它。我想使用 TR1 的 MS 实现,因为我希望它比 Boost 更快。

0 投票
6 回答
1538 浏览

c++ - 为什么 strlen() 似乎返回在 VC++ 调试器中?

我有一个 C++ 类型的字符串const char*作为参数传递给 strlen,但它返回 void。

它就像

谢谢..

编辑:做了一些检查,

仍然无效..为什么?

编辑:这是图片 http://img14.imageshack.us/img14/1808/strlen.png

抱歉之前不清楚。格式化不是很好。无论如何,Evan Teran 和 Vlad Romascanu 都解决了这个困惑。另请查看 Brian R. Bondy 的回答。

谢谢。随意关闭。

0 投票
1 回答
365 浏览

mfc - 如何将 CComboBox 数据复制到另一个 CComboBox?

如何将 CComboBox 数据复制到另一个 CComboBox?