我被要求帮助为某人创建遗留vb6应用程序,因此我决定按照本指南在我的Windows 7 x64笔记本电脑上投入Visual Studio 6 .
它安装得很好,从我可以看到一切正常,除了Microsoft Windows Common Controls 6.0(sp6).Microsoft Windows Common Controls-2 6.0(sp6),Microsoft Windows Common Controls 5.0(sp2)等都可以正常工作.但是,当我尝试添加Microsoft Windows公共控件6.0(SP6)组件时,我收到错误:
'' could not be loaded
Run Code Online (Sandbox Code Playgroud)
我无法添加图像,所以我已经为这里的任何人想要看到它的屏幕截图上传了一个:
我已经尝试注册/取消注册/重新注册MXCOMCTL.OCX,MSCOMCT2.OCX,msdatsrc.tlb都没有成功.我还卸载了一个已知的安全更新,该更新可能导致Windows公共控件出现问题.我已经删除了IE11,即使报告状态IE11不会像IE10那样导致MSCOMCTL.OCX问题.
我在Windows XP SP3兼容模式下运行VB6.EXE.使用禁用可视主题,禁用桌面合成,以及在高DPI设置下禁用显示缩放.以及以管理员身份运行它.
我还尝试打开一个使用此控件的先前项目,并且在加载过程中失败时出现与屏幕截图相同的"空白"错误,生成的错误日志中包含以下内容:
第35行:控件lvData的类MSComctlLib.ListView不是加载的控件类.第223行:控制Stat的MSComctlLib.StatusBar类不是加载的控件类.
所以这告诉我这不是.vbp中的版本问题,就像一些建议(因为它也发生在新的空白项目中).
我斗智斗勇.显然人们已经使VB6和Windows 7 x64都能正常工作(使用Windows公共控件)但是我没试过可以缓解我的问题.我希望这里有人可能会遇到这个问题,或者对于发生的事情有一些想法.
我对以下C程序的输出有疑问.我尝试使用Visual C++ 6.0和MinGW32(gcc 3.4.2)编译它.
#include <stdio.h>
int main() {
int x = 2147483647;
printf("%f\n", (float)2147483647);
printf("%f\n", (float)x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
2147483648.000000
2147483647.000000
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么两条线都不同?将整数值2147483647转换为IEEE 754浮点格式时,它将近似为2147483648.0.所以,我预计这两行都将等于2147483648.000000.
编辑:值"2147483647.000000"不能是单精度浮点值,因为数字2147483647不能精确地以IEEE 754单精度浮点格式表示而不会损失精度.
我有通过visual studio 2013编译我的项目的问题.我收到此链接器错误:
LINK : fatal error LNK1104: cannot open file 'nafxcwd.lib'
Run Code Online (Sandbox Code Playgroud)
根据这个页面,我必须在共享库中使用MFC.但我根本不使用MFC.
我的所有库和主项目都使用Use Standard Windows Libraries
设置进行编译.仅当我尝试通过Visual Studio 2013工具链构建项目时才会出现此问题,但它已成功使用Visual Studio 2010工具链构建.
PS项目已从Visual Studio 6.0迁移到Visual Studio 2013.
我是一名研究生程序员,当涉及到C++时,我希望main()
每次都有一个函数.
但是,我已经获得了一个用C++编写的Visual Studio 6.0项目,它没有main()
函数.我真的无法弄清楚这个程序是如何执行的或它从哪里开始的.
我已经看到了可用于更改main()
函数名称的宏示例,但是此代码没有显示该实践的迹象.
任何人都可以建议我应该寻找什么?
对于使用Visual Studio 6用C++编写的大型应用程序,进入现代时代的最佳方式是什么?
我想采取渐进的方法,我们慢慢移动部分代码并将新功能编写到C#中,并将其编译成可以从遗留应用程序引用的库或DLL.
这是可能的,最好的方法是什么?
编辑:此时我们仅限于Express版本,我认为不允许使用我们当前应用程序中大量使用的MFC库.它也是一个相当大的应用程序,具有很多硬件依赖性,所以我不认为批量迁移是在卡片中.
Edit2:我们已经研究过在C#中编写COM包装的组件但是没有COM经验,这是可怕和复杂的.是否有可能生成一个带有直接C接口的C#dll,其中隐藏了所有托管优势?或者COM是必要的邪恶?
我怎样才能做到这一点 ?我可以在VS2010 IDE中工作,但是可以使用VS C++ 6.0编译器进行编译吗?我可以在VS2010 IDE中工作并使用VS2008编译器进行编译吗?
visual-studio-2010 visual-c++ visual-studio-6 visual-c++-2010
我在链接应用程序时在MFC VS6项目中遇到这些类型的错误:
msvcrt.lib(MSVCRT.dll) : error LNK2005: _atoi already defined in LIBC.lib(atox.obj)
Run Code Online (Sandbox Code Playgroud)
我知道它意味着什么(一个函数存在于两个不同的库中); 解决它我应该排除2个库(msvcrt.lib
或libc.lib
)中的一个.
但是,如果我这样做,会有各种未解决的外部错误.所以我想继续使用这两个库.
有没有办法告诉链接器我想要使用该_atoi
函数libc.lib
而不是msvcrt.lib
(或其他方式)?
任何帮助或方向都会很棒.
我有一个在Visual Basic 6中开发的旧项目,我需要在其中进行增强.
我需要确认是否可以在Windows 8.1上安装Visual Studio 6.
上次,当我在Windows 7中安装它时,我遇到了安装方面的困难,但最终在添加了一些DLL之后完成了.
我不想浪费时间,所以,如果有人已经设法安装它,你能和我们分享一下吗?
如何在自己的页面上为每个子或函数编目,索引和/或打印VB6源代码..?如果可能的话,我想使用免费或包含Visual Studio插件这样做,但我并不反对自己写一些东西.我熟悉"Microsoft Office Visual Basic for Applications Extensibility",似乎VB6有一个类似的模块,这可能允许我通过代码模块集合简单地"For Each"并将打印机扔到打印机上时间.它可能需要10-15行代码.
我的首要任务是打印,最好是在自己的页面上使用每个子/功能,但是使用IDE的常规打印功能,所有代码在一个长打印输出中一起运行.接下来,我想在每个VBP中创建每个子,函数,变量和常量的名称的索引/ toc.我们有Visual Studio 6.0企业版,但似乎没有任何东西可以用来做这些事情.
你可能会笑,并问,"为什么VB6 .. ?? LOL !!".这是因为我的任务是升级和更改运行工厂的大型软件系统的VB6源代码.它位于一个与外部世界没有联系的孤立网络上,它已经运行了14年,但现在他们想要开始升级一些东西.该系统由许多VBP文件组成,每个文件都有许多模块和表单.
编辑:我确实尝试谷歌搜索的答案,但事实证明这是不可能的.我得到的只是关于用VB6编写的应用程序打印的编码样本,而不是从IDE打印源代码.
我们目前在Visual Studio 2008中使用AnkhSvn但有一个仍在Visual Studio 6中编码的解决方案.
是否有任何SVN插件可以与这样的旧IDE一起运行?
希望摆脱SourceSafe(颤抖)并合并我们的源代码控制,但更愿意在IDE中使用工具而不是使用tortoise SVN.