小编Yod*_*ber的帖子

当C++/CLI项目使用/ ZI引用静态lib项目时警告LNK4075(编辑并继续)

我在Visual Studio 2012解决方案中有以下项目:

  • Native(no /clr)静态lib项目,使用/ZIEdit And Continue 编译.
  • C++/CLI DLL项目,它引用了上面的静态库.

C++/CLI项目使用以下警告构建:

warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:LBR' specification
Run Code Online (Sandbox Code Playgroud)

如果将/ OPT:NOLBR添加到C++/CLI项目的链接器选项中,则警告变为:

warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification
Run Code Online (Sandbox Code Playgroud)

任何更改C++/CLI项目的增量链接设置的尝试都不会更改警告(C++/CLI项目永远不会以递增方式链接).

我知道我将无法在C++/CLI项目中使用"编辑并继续",因为这不受支持.实际上,在静态lib项目中将/ ZI更改为/ Zi(禁用编辑并继续)会消除警告,但我不能这样做 - 该lib的其他非CLR使用者需要使用"编辑并继续".

如何在不禁用静态库中的编辑和继续的情况下摆脱此警告(并且希望不为静态库的本机和CLR用户维护单独的构建配置)?我的意思是,有没有办法要求链接器忽略/EDITANDCONTINUE嵌入在引用的静态库中的指令(与/NODEFAULTLIB忽略/DEFAULTLIB指令的方式相同)?

我创建了一个最小的VS解决方案,可以重现所描述的问题.

warnings c++-cli edit-and-continue visual-studio-2012

18
推荐指数
1
解决办法
7077
查看次数

C#(非静态)类来表示路径

我正在寻找一个代表文件系统路径的C#类.我想使用它(而不是字符串)作为变量和方法参数的数据类型(最主要的原因:类型安全,防连接,逻辑比较).

  • System.IO.Path提供了我想要的大部分功能,但它是静态的.
  • 据我所知,System.IO.FileInfo执行IO操作来完成它的工作.我只想要路径字符串的包装器.

谢谢!

c# types path

13
推荐指数
1
解决办法
2814
查看次数

如何使用Windows SDK在没有VS2008的VS2012中使用v90平台工具集进行构建?

我使用Visual Studio 2012,这是我安装的唯一Visual Studio版本.我需要使用v90平台工具集(Visual Studio 2008)构建某些C++项目,但我无法安装Visual Studio 2008.

我了解可以通过安装Windows SDK 7.0来使用v90平台工具集.究竟是怎么做到的?如果我只使用7.0 SP1的Web安装程序,我仍然不会将v90视为可能的平台工具集之一.

visual-studio-2008 visual-studio-2012

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

当消息变大时,IpcChannel Remoting会变慢

我正在评估驻留在同一台机器上的几个.NET 2.0进程的各种进程间通信方法.当然,.Net Remoting是候选者,理论上最快的配置应该是IpcChannel(命名管道)+ BinaryFormatter.

我的基准测试确实表明,远程处理IpcChannel可能比TcpChannel更快,但IpcChannel显示吞吐量随着消息变大(大约30 MB)而急剧下降:

Message Size    30 MB       3 MB        300 KB      3 KB
Remoting / TCP  120 MB/s    115.4 MB/s  109.5 MB/s  13.7 MB/s
Remoting / IPC  55 MB/s     223.3 MB/s  218.5 MB/s  20.3 MB/s

有没有人知道为什么,或任何想法如何优化任一渠道的性能?我确实需要传递30 MB的BLOB,并且希望避免必须处理共享内存/内存映射文件.另外,我不能把这些写入磁盘(慢得多).


以下方法用于基准测试(重复调用,测量的总时间,按总时间划分的总有效负载大小).

private byte[] _bytes = null;

public byte[] HelloWorld(long size)
{
    if (_bytes == null || _bytes.Length != size)
        _bytes = new byte[size];
    return _bytes;
}
Run Code Online (Sandbox Code Playgroud)

remoting ipc named-pipes .net-2.0

9
推荐指数
1
解决办法
1731
查看次数

使用v110_xp时链接器错误:"无法打开文件",5.01'"

我建立了一些的Visual C++ DLL和EXE项目与Visual Studio 2012年当默认的平台工具集建筑V110构建成功,但与Windows XP兼容的平台工具集构建时v110_xp失败,并在每个项目下面的链接器错误:

链接:致命错误LNK1104:无法打开文件',5.01'

需要注意的是,如果我改变从平台的Win32x64时错误更改为:

链接:致命错误LNK1104:无法打开文件',5.02'

通过在Visual Studio中的"空项目"模板中创建一个新的EXE项目并添加一些*.cpp文件定义,可以轻松地重现这一点int main() {return 6;}.它将成功构建,直到您将平台工具集从v110更改v110_xp.

为什么会发生这种情况?如何在Windows XP兼容性下成功构建这些项目?

linker-errors visual-c++ visual-studio-2012

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

以编程方式创建MS Word文件,而无需安装MS Word

如何使用Visual Studio 2008在C#中创建Word文件,而不在我的PC上使用Word?

我是否需要在PC上安装Word,才能使用Visual Studio 2008创建Word文件?

提前致谢!

c# ms-word visual-studio-2008

5
推荐指数
1
解决办法
1979
查看次数

如何检索system32或SysWOW64的正确路径?

我有一个32位进程,可以在32位或64位Windows中运行.因此,当然,如果进程尝试访问该文件c:\windows\system32\file.ext,它将被重定向到c:\windows\SysWOW64\file.ext.到目前为止很好 - 我不想禁用重定向.

我的问题是我的进程实际上并没有访问该文件 - 相反它只是将其路径写入文本文件,我希望该文本文件SysWOW64在64位系统和system3232位系统上读取.我怎样才能做到这一点?

windows win64 32bit-64bit

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