小编Mr.*_*ith的帖子

为什么在 x64 版本上对 System.Numerics 函数进行断点编辑参数时会出现 FatalExecutionEngineError?

在 AnyCPU 或 x86 上,我可以运行这个程序,在 Foo 上设置一个断点,将第一个参数从 0.5f 编辑到 0.6f,然后恢复就好了。但是,在 x64 上,它在恢复时始终因 FatalExecutionEngineError 崩溃。

using System;
using System.Numerics;

public static class Interaction
{
    public static void Main(string[] args)
    {
        while (true)
        {
            Console.WriteLine(Foo.M11);
            System.Threading.Thread.Sleep(0);
        }
    }

    private static Matrix4x4 Foo
    {
        get
        {
            return Matrix4x4.CreateFromYawPitchRoll(0.5f /* breakpoint and set this to 0.6f*/, 0.5f, 0.5f);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

致命的处决

至少,它发生在 .NET Framework 4.7.2 和 .NET Framework 4.6.2 上。有没有办法解决这个问题?

编辑在 .NET Framework 4.8 上对其进行了测试,在阅读他们修复了该版本中的一些 x64 内容后,它仍然崩溃!

.net c#

5
推荐指数
0
解决办法
263
查看次数

在32位应用程序中使用64位DLL

XCode的ARC重构迫使我的Cocoa Library DLL为64位,我不知道我是否仍然可以DllImport使用x86 C#应用程序中的DLL.这可能吗,这样做有什么后果吗?

c# interop 32bit-64bit

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

私人Enum宣言

在Objective-C类中,我有一个@private ivar,它使用以下形式的枚举:

typedef NS_ENUM(NSInteger, PlayerStateType) {
    PlayerStateOff,
    PlayerStatePlaying,
    PlayerStatePaused
};
Run Code Online (Sandbox Code Playgroud)

但是,我将此定义包含在该类的头文件中(因为它已在其中使用).这有效地使类型公开,这不是我的意图.如何将此枚举类型设为私有?

xcode objective-c ios

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

foreach 是否在 IEnumerable<struct> 上应用装箱?

相信C#编译器在普通数组(如.)上使用时会改写foreach成a 。但是,对于存储 a 的集合,会因迭代其内容而导致装箱吗?forint[]struct

例如,下面的代码是否依赖装箱 ( IEnumerable<KeyValuePair<int,byte>>) 来迭代dict?

void DoSomething(Dictionary<int,byte> dict) {
    foreach(KeyValuePair<int,byte> itr in dict)
        m_correlation += itr.Key; }
Run Code Online (Sandbox Code Playgroud)

c# optimization boxing

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

如何查询 SSBO 结构的对齐/步幅?

我不确定哪种结构布局最适合我的应用程序:sharedpackedstd140std430。我并不是要对每一个进行解释,这些信息很容易找到,只是很难弄清楚每个对供应商兼容性/性能的影响。如果shared是默认值,我怀疑这是一个很好的起点。

据我所知,我必须在使用sharedor时查询对齐/偏移量packed,因为它是特定于实现的。

用于查询它的 API 是什么?glGetShaderiv在绑定计算着色器时,我是否传递了一些参数,让我找出对齐方式?

opengl shader glsl opengl-4 shader-storage-buffer

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

uint16_t 与 UInt16

我正在编写一个 iOS 应用程序,我注意到我有几种方法来定义一个固定宽度的 16 位无符号整数。

  1. uint16_t - 在 stdint.h 中定义
  2. UInt16 - 在 MacTypes.h 中定义

由于这些是固定宽度(我假设相同的字节序),Apple 定义自己版本的原因可能是什么?

c objective-c ios

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

循环标题导入,枚举无法识别

我有两个Cocoa Touch课程(objective-c).并且#import彼此的标题.

A类的标题定义了一个枚举,B类的标题试图使用它.由于无法识别类型,B类无法编译.

我认为这是一个循环依赖问题,但我认为@class不会有太多帮助,因为问题是枚举.

你有什么建议?

cocoa-touch objective-c

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

libxml2 xmlChar*到std :: wstring

libxml2似乎将所有字符串存储在UTF-8中,如xmlChar *.

/**
 * xmlChar:
 *
 * This is a basic byte in an UTF-8 encoded string.
 * It's unsigned allowing to pinpoint case where char * are assigned
 * to xmlChar * (possibly making serialization back impossible).
 */
typedef unsigned char xmlChar;
Run Code Online (Sandbox Code Playgroud)

由于libxml2是一个C库,没有提供程序来得到一个std::wstring出来的xmlChar *.我想知道在C++ 11中转换为a 的谨慎方法是使用mbstowcs C函数,通过类似这样的东西(正在进行中):xmlChar *std::wstring

std::wstring xmlCharToWideString(const xmlChar *xmlString) {
    if(!xmlString){abort();} //provided string was null
    int charLength = xmlStrlen(xmlString); //excludes null terminator …
Run Code Online (Sandbox Code Playgroud)

c++ string unicode libxml2

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

任意大小的枚举值

我正在编译为GCC编写的代码,在Visual C++ 2012中.我收到有关枚举值截断的警告,其中包含以下枚举(由于值超出了int的范围):

enum tile_flags {
   TILE_FLAG_INNER_FLAME= 0x10000000ULL,
    TILE_FLAG_CONSTRICTED= 0x20000000ULL,

    TILE_FLAG_MIMIC_INEPT 0x2000000000ULL
    TILE_FLAG_MIMIC 0x4000000000ULL
    TILE_FLAG_MIMIC_RAVEN 0x6000000000ULL
    TILE_FLAG_MIMIC_MASK 0x6000000000ULL
}
Run Code Online (Sandbox Code Playgroud)

在编译x86时,看起来MSVC会简单地截断枚举值以适应32位.但是,GCC中没有发生截断.海湾合作委员会发生了什么?我怎样才能为MSVC做这项工作?

c++ gcc visual-c++

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

Assembly.LoadFrom如何解决非托管依赖项?

我对这种行为感到困惑Assembly.LoadFrom.在我的应用程序中,我调用Assembly.LoadFrom.NET .exe并使用它来启动它EntryPoint.Invoke(这种奇怪的方法对于在非Windows平台上构建启动器应用程序非常有用).

我曾假设,因为它assemblyFile位于不同的文件夹中,所以它无法找到与它位于同一文件夹中的某些托管 .dll依赖项.但它奏效了; 它并没有失败......

这样看来,当我打电话Assembly.LoadFrom(assemblyFile),它包含检查的文件夹assemblyFile进行管理的依赖关系assemblyFile.我没想到这一点.如果该程序集具有非托管依赖项(例如a DllImport)会发生什么情况,它仍会搜索同一目录吗?这个行为框架是否具体?

.net c# dllimport

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

OpenGL ES 2.0 - 纹理四核

每当我尝试渲染纹理四边形时,我最终会得到纹理扭曲的三角形部分:请参阅此图像http://i45.tinypic.com/14mgnkn.png.

纹理是在GIMP中创建的PNG,我尝试了两种单独的加载纹理的方法(均来自Apple自己的示例代码).每种加载纹理的方法产生不同的结果(我不知道它是否是不同的默认设置,或者纹理是否有问题),但我无法正确渲染.

我已尝试以多种不同的方式设置我的索引/ Verticle/texices,从最快的方式发布的建议到在OpenGL ES中绘制四边形?但仍然没有运气.

我能错过什么?

加载纹理的代码

- (GLuint)setupTexture:(NSString *)fileName {    
    CGImageRef spriteImage = [UIImage imageNamed:fileName].CGImage;
    if (!spriteImage) {
        NSLog(@"Failed to load image %@", fileName);
        exit(1);
    }
    size_t width = CGImageGetWidth(spriteImage);
    size_t height = CGImageGetHeight(spriteImage);
    GLubyte * spriteData = (GLubyte *) calloc(width*height*4, sizeof(GLubyte));
    CGContextRef spriteContext = CGBitmapContextCreate(spriteData, width, height, 8, width*4, 
    CGImageGetColorSpace(spriteImage), kCGImageAlphaPremultipliedLast);    
    CGContextDrawImage(spriteContext, CGRectMake(0, 0, width, height), spriteImage);
    CGContextRelease(spriteContext);
    GLuint texName;
    glGenTextures(1, &texName);
    glBindTexture(GL_TEXTURE_2D, texName);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, …
Run Code Online (Sandbox Code Playgroud)

xcode opengl-es ios opengl-es-2.0

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

覆盖方法是否被视为虚拟方法?

摘自Eric Gunnerson的博客" 虚拟函数没有内联 ",但什么才有资格作为虚拟方法?MSDN将其定义为:

"当实例方法声明包含虚拟修饰符时,该方法被称为虚方法.当不存在虚拟修饰符时,该方法被称为非虚方法." - MSDN来源

严格来说,使用覆盖方法的派生类public override void SomeMethod(){}"不包含单词virtual,所以它可以内联吗?

编辑:具体来说,问题是覆盖的方法是否是内联的候选者,因为我提供的两个链接在覆盖方法上过于模糊.

.net c# cil

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

片段着色器中的丢弃是否会阻止对模板缓冲区的修改?

我想discard在我的片段着色器中阻止该片段写入模板缓冲区;我对游戏中的视觉效果有一个想法,如果我可以依赖该行为,那么它可能是可以实现的discard

我的片段着色器没有做任何非常奇特的事情;它只是对纹理进行采样,如果 alpha 接近 0,则discard否则写入。

void main()
{
    vec4 texColor = texture(tex, texCoord);
    if(texColor.a < 0.5f)
    {
        discard;
    }
    FragColor = texColor;
}
Run Code Online (Sandbox Code Playgroud)

然而,听起来我不能依赖于discard阻止模板缓冲区被写入:

如果模板测试处于活动状态,则丢弃的片段仍会影响模板缓冲区。即使模板或深度测试失败,模板测试也可以修改模板缓冲区。并且由于模板测试发生在深度测试之前,因此深度测试失败不能阻止模板测试更新模板缓冲区。

我确实需要在渲染时激活模板测试。我不能依靠discard阻止写入模板缓冲区吗?

opengl stencil-buffer opengl-4

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