小编bri*_*ner的帖子

3
推荐指数
1
解决办法
524
查看次数

在Visual Studio 2010 Beta 2中定位.NET 3.5 C++/CLI

有没有人成功将VS 2008 C++/CLI(vcproj)项目转换为VS 2010项目(vcxproj),同时将.NET 3.5作为目标框架?我无法做到这一点并让项目成功构建.该项目在VS2008中编译为.NET 3.5,在VS2010中编译为.NET 4.0,但我无法在2010年使用.NET 3.5.IDE似乎没有为它提供选项,并且修改了vcxproj文件通过增加

<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
Run Code Online (Sandbox Code Playgroud)

导致编译失败,并出现以下错误:

Error   1   error C1001: An internal error has occurred in the compiler.
Run Code Online (Sandbox Code Playgroud)

根据这个链接,在VS2008和2010之间使用的编译器显然存在一些差异,但仍然建议手动编辑项目文件作为解决方案.有没有人对此有任何想法?

.net c++-cli visual-studio-2010 visual-c++ c1001

3
推荐指数
1
解决办法
3760
查看次数

您是否建议在Build上启用C/C++的代码分析?

我正在使用Visual Studio 2010,在我的C++/CLI项目中有两个代码分析设置:

  1. 在Build上启用代码分析
  2. 在Build上启用C/C++的代码分析

我的问题是关于第二种情况.

我已经启用了它,它需要很长时间才能运行并且它找不到太多.

您是否建议启用此功能?为什么?

c++ code-analysis c++-cli visual-studio-2010 visual-studio

3
推荐指数
1
解决办法
1019
查看次数

如何在byte []的两个部分调用memcmp()(带偏移量)?

我想有效地比较部分byte[]- 所以我理解memcmp()应该使用.

我知道我可以使用PInvoke来调用memcmp()- 在.NET中比较两个字节数组

但是,我想只比较byte[]使用偏移的部分,并且memcmp()因为它使用指针而没有偏移.

int CompareBuffers(byte[] buffer1, int offset1, byte[] buffer2, int offset2, int count)
{
  // Somehow call memcmp(&buffer1+offset1, &buffer2+offset2, count)
}
Run Code Online (Sandbox Code Playgroud)

我应该使用C++/CLI来做到这一点吗?

我应该在IntPtr中使用PInvoke吗?怎么样?

谢谢.

.net c# pinvoke c++-cli memcmp

3
推荐指数
2
解决办法
7969
查看次数

内部编译器错误和boost :: bind

我正在测试一个C++类,其中包含许多基本相同形式的函数:

ClassUnderTest t;

DATATYPE data = { 0 };
try
{
    t.SomeFunction( &data );
}
catch( const SomeException& e )
{
    // log known error
}
catch( ... )
{
    // log unknown error
}
Run Code Online (Sandbox Code Playgroud)

由于有很多这些,我以为我会写一个功能来完成大部分繁重的工作:

template< typename DATA, typename TestFunction >
int DoTest( TestFunction test_fcn )
{
    DATA data = { 0 };
    try
    {
        test_fcn( &data );
    }
    catch( const SomeException& e )
    {
        // log known error
        return FAIL;
    }
    catch( ... )
    {
        // log unknown …
Run Code Online (Sandbox Code Playgroud)

c++ boost bind c1001

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

引用dll时忽略内部版本号

我有一个.NET 4.0项目(C#)的解决方案,它生成一个延迟签名的dll,我进行dotfuscate和签名.

编辑:这是我如何版本的DLL:

[assembly: AssemblyVersion("0.7.0.*")]
[assembly: AssemblyFileVersion("0.7.0.0")]
Run Code Online (Sandbox Code Playgroud)

我有一个.NET 4.0项目(C++/CLI)的另一个解决方案,它引用了签名的dll并生成一个签名的dll(实际上,由于C++构建系统的缺陷,在后期构建中延迟签名和签名).

问题是对dll的引用包含一个特定的版本号,甚至包括构建号(我想要一个构建号).

每次构建引用的dll时,我都必须更改项目设置文件(.vcxproj),以便引用新版本的dll.由于我使用源代码控制,这非常不方便(不同的计算机可能有不同的构建号,因为每台计算机都构建自己引用的dll - 引用的dll不在源代码控制中).

如果我不更改参考,我会收到警告:

警告MSB3245:无法解析此引用.找不到装配件......

还有很多这样的错误:

错误C3083:'Foo':'::'左边的符号必须是一个类型

一旦我更改了引用,就会解决这些问题.

如何使引用忽略内部版本号甚至整个版本号?

.net dll version visual-studio

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

C++ map用于跟踪到达地图结尾的时间

目前我有一张打印出以下内容的地图

map<string, map<int,int> > mapper;
map<int,int>::iterator inner;
map<string, map<int,int> >::iterator outer;


for(outer = mapper.begin(); outer != mapper.end(); outer++){
    cout<<outer->first<<": ";
  for(inner = outer->second.begin(); inner != outer->second.end(); inner++){
      cout<<inner->first<<","<<inner->second<<",";
  }
}
Run Code Online (Sandbox Code Playgroud)

截至目前,这打印出以下内容

  stringone: 1,2,3,4,6,7,8,
  stringtwo: 3,5,6,7,
  stringthree: 2,3,4,5,
Run Code Online (Sandbox Code Playgroud)

我想要打印出来的是

  stringone: 1,2,3,4,6,7,8
  stringtwo: 3,5,6,7
  stringthree: 2,3,4,5
Run Code Online (Sandbox Code Playgroud)

我怎样才能检查内部地图内的地图结尾?任何帮助将不胜感激谢谢

c++ stl map

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

如何防止C#编译器删除内部构造函数

我有一个带有2个构造函数的公共类:默认(没有参数),它是内部的,而另一个是公共的.默认构造函数使用一些默认值调用另一个构造函数.

我使用反射调用内部构造函数,因此它不会在程序集中的任何位置静态使用(仅通过反射).

当我进行反射调用时,我得到:

System.MissingMethodException
    Message=No parameterless constructor defined for this object.
Run Code Online (Sandbox Code Playgroud)

我知道两个解决方法:

  1. 使构造函数公开(但我不希望此程序集的用户使用它).
  2. 从一些公共方法调用构造函数(我有很多像这样的类,所以我不想写很多这个丑陋无用的代码).

这个问题有什么更好的解决方案

值得一提的是,如果默认构造函数是public,我不会得到该异常.

谢谢,

波阿斯.

c# reflection internal compiler-optimization

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