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

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 投票
1 回答
3357 浏览

qt - fatal error LNK1104: cannot open file 'mfc110d.lib'

I am currently developing a program in VS c++ 2012 ( Ultimate trial version). It uses 3rd part lib ( Qt5.1.1 x64 and openCV 2.4.5 ). When I try to build it it gives " fatal error LNK1104: cannot open file 'mfc110d.lib'". I tried to find this lib but it seems that it does not exist on my machine. This project was initially developed on a different machine. Have anyone met this problem before?

0 投票
2 回答
5137 浏览

c++ - 传递匹配 `L"%s"` 说明符的 `char const*` 时 `swprintf` 的行为

我正在编写一个 Excel 插件,需要wchar_t 为 Excel 生成输出(尽管在内部,我们是 100% char,实际上仅限char于纯 ASCII)。在某一时刻,我正在使用 swprintf进行转换:

Excel 显示某种 CJK 字符,尽管message (type char const*) 是一个以空字符结尾的字符串,在可打印的 ASCII 之外没有字符(十六进制值 0x20-0x7E)。

我在一个小型测试程序中尝试过这个,以十六进制转储生成的字符串,看起来 VC++ 将message 其视为一个wchar_t const*(尽管它似乎识别'\0'正确,尽管它在一个字节上);这导致wchar_t0x6568 (而不是0x0068, 0x0065我期望的)这样的值。

根据 C99 标准,对于"%s"说明符, swprintf应将字符从char const* “好像通过重复调用mbrtowc函数 [...]”转换。我看到的行为是 Visual C++ 库中的错误,还是我必须更改全局语言环境中的某些内容?

(FWIW:当我用 g++ 编译和运行我的小测试程序时,我得到了我期望的行为。但是,G++ 不是我们的 Excel 插件的选项,至少目前不是。)

0 投票
2 回答
176 浏览

c++ - 如何拆分 C++ 字符串以单独获取整个字符串及其某些部分/字符

我的问题是,如何在 C++ 中拆分字符串?例如,我有`

  1. 它需要单独获取整个表达式,例如[,(,a,*,b,......
  2. 而且我只想将括号[,(,),{,(,),},]放在正确的位置

我怎样才能用一些简单的方法做到这些

0 投票
1 回答
349 浏览

c++ - std::pair 移动未在定义中省略?

我注意到 Visual Studio 2012 有一些很奇怪的地方: 像这样定义对对象:

不会在 VC11 中忽略该对的复制/移动,此调用将打印

也就是说,创建一个临时对,然后将其移动到 objp 变量中。(将其声明为pair<...> obj;仅记录默认 ctor)

我已经单独与我的 LogMe 测试对象进行了交叉检查:

这里的任务将被省略。

这似乎是 VC11 特有的,因为在 IDEOne(使用 gcc 4.8.1)中对其进行测试表明,无关的动作总是在那里被忽略。

这里发生了什么? 不能依赖被忽略的初始化副本让我很紧张。

注意:发布与调试版本的测试显示相同的结果。(这是我所预料的,因为复制省略是独立于 MSVC 中的优化标志执行的。)


要测试的完整源代码(另请参见ideone 链接):

0 投票
1 回答
2425 浏览

visual-c++-2012 - 将数组写入 Serialport Visual C++

我正在编写一个程序,通过 RS232 从 PC 到微芯片进行通信。

我习惯 C#,但我开始使用 Visual C++。

我收到以下错误:

IntelliSense:没有重载函数“System::IO::Ports::SerialPort::Write”实例与参数列表参数类型匹配:(RTC_Visual::uint8 [27U], int,RTC_Visual::uint8)

我写了写入串口的命令如下:

请有人告诉我我做错了什么,或者该serialport->write方法的正确结构是什么。

提前致谢

0 投票
1 回答
1907 浏览

visual-studio-2012 - 合并Visual C++ 2012项目过滤器时如何防止系统冲突?

将新文件添加到 Visual C++ 项目时,IDE 会将它们添加到两个位置:

  • 主项目文件(例如 myproject.vcxproj)
  • 项目“过滤器”,解决方案资源管理器的虚拟路径存储库(例如 myproject.vcxproj.filters)

合并文件添加对于主项目文件来说不是问题,但它经常是过滤器冲突的根源。问题在于 IDE 总是在过滤器列表的最后添加新元素。

为了说明这个问题,假设过滤器最初看起来像这样:

然后程序员A添加newFileA.h并提交,过滤器更新如下:

如果程序员 B 还添加了一个newFileB.h并在 head 修订上同步了注释,他的过滤器的本地副本将如下所示:

尝试与程序员 A 的更改同步将系统地引发程序员 B 在第 7-8-9 行的合并冲突。这是因为更改恰好发生在完全相同的位置。

有没有办法防止这个问题发生,无论是通过 Visual Studio 中的配置更改,一些合并工具的特殊选项(最好是 Araxis Merge 或 Beyond Compare),还是其他什么?

0 投票
2 回答
531 浏览

visual-studio - Visual C++ 2012:无法启动程序(在调试尝试时删除程序??)

当我尝试调试我的程序时,我收到了这个错误:

我将正确的项目设置为活动项目,它是一个运行良好的 .exe,直到现在。如果我只编译,它实际上会在正确的目录中创建 TestStuff.exe,但如果我尝试调试它会删除 TestStuff.exe 并声称它不存在!如果我在不更改源的情况下删除 Debug 目录中的所有内容,则它声称所有内容都是最新的并且不需要编译。如果我摆弄我的源文件并重新编译,.exe 会出现,但是当我尝试调试时,VC++ 会删除它。

我怎么能逃脱呢?

我尝试重命名 .suo 文件无济于事,除了 .sln 本身之外似乎没有任何其他文件可以摆弄......重新启动 VC++ 也无济于事:(

编辑:发布版本从 IDE 运行,但不是调试版本。这就像有用的完全相反

编辑 2:如果我手动运行调试 TestStuff.exe,我会收到此错误:

所以我想我的程序现在出了点问题,不知道什么或为什么它可以编译但不能运行。此外,它会自行删除:(

0 投票
1 回答
67 浏览

visual-c++-2012 - MSVC++ 优化 volatile 静态

我有一个 Visual Studio 解决方案,其中某些“插件”类向工厂类注册,以便可以按名称创建“插件”。这些插件与工厂一起驻留在静态库项目中。

注册通过一个 volatile 静态注册模板类进行,每个模板类都在其自己的插件编译单元中(因此注册过程由每个插件“完成”,并且没有可用插件的中心信息),例如:

但问题是,如果 PluginClass 没有在代码的其他地方逐字使用,链接器会选择优化代码,即上面的静态永远不会被执行。

在我看来,这就像一个编译器或链接器错误,因为我已经明确指出静态是易失的(即“不要触摸!”):)

解决方法显然是将上面的注册移动到我知道总是包含的编译单元,这当然有效。然而,它并不那么整洁。

想法?

0 投票
2 回答
1746 浏览

c++ - 用于 std::list 和 std::map 的 Visual C++11 堆栈分配器

我想提高 list 和 map 的特定用法的性能,其中项目的数量有大约 100000 的硬限制。STL 默认分配器显然不是这种情况下的最佳选择,因为清理所有成千上万的小物体都需要很长时间(> 10秒!)。更不用说所有其他潜在问题了。

所以很明显,为了改善这一点,我可以预先分配正确的内存量来包含所有列表/映射节点。到目前为止,我已经能够实现默认分配器的工作版本(通过从 std::allocator_traits 派生),它为每个节点使用 alloc/free。但我正在努力找出如何修改它以允许“有状态”使用,例如,我非常简单的堆栈:

我正在实例化我的列表和地图,如下所示:

MemPoolStack本身并不是真正的问题,它可能有错误,但这只是为了举例。关键是MemPoolStack该类将 a 存储unique_ptr到预分配的内存中,以及一些其他成员变量。

那里的问题是我需要MemPoolStackMemPool类中对我有一些引用,以便 Visual C++11 映射或列表可以构造我的分配器的所有不同方式都以MemPoolStack每个列表或映射一个实例结束。然后我可以使用MemPoolStack::Pop()inMemPool::allocate()MemPoolStack::Push()in MemPool::deallocate()

我还需要一种方法来最初构造我的分配器,指定大小。我尝试放入shared_ptr<MemPoolStack>MemPool但当列表决定调用分配器的默认构造函数时它最终迷路了......

我也愿意放弃所有这些代码,以获得原始问题的良好替代解决方案。

0 投票
3 回答
656 浏览

c++ - 如何处理在取消的构建中随机损坏的预编译头文件?

我在一个大量使用预编译头文件的项目中使用 Visual C++ 2012。如此沉重以至于臭名昭著的/Zm开关正在使用中。

当我取消正在进行的构建时,有时会在下一次构建时收到此错误:

十分之九,事情会顺利进行,但是当发生这种情况时,我必须找到 .pch 并在重新启动构建之前手动删除它。

这让我有点恼火。有没有办法防止这种情况发生?微软的补丁?还是一种强制 Visual 删除 .pch 并在问题发生时自动重新启动构建的方法?还是我没有想到的其他解决方案?

编辑:这是我正在运行的 Visual 版本: