小编wat*_*pet的帖子

与阵列的元帅联盟

我遇到了一个奇怪的场景,它在C#/ .NET中包含了包含数组的联合.考虑以下程序:

namespace Marshal
{
    class Program
    {
        [StructLayout(LayoutKind.Sequential, Pack = 1)]
        struct InnerType
        {
            byte Foo;
            //[MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)]
            //byte[] Bar;
        }


        [StructLayout(LayoutKind.Explicit, Pack = 1)]
        struct UnionType
        {
            [FieldOffset(0)]
            InnerType UnionMember1;

            [FieldOffset(0)]
            [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)]
            byte[] UnionMember2;
        }

        static void Main(string[] args)
        {
            Console.WriteLine(@"SizeOf UnionType: {0}", System.Runtime.InteropServices.Marshal.SizeOf(typeof(UnionType)));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您运行此程序,您将获得以下异常:

Could not load type 'UnionType' from assembly 'Marshal, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because it contains an object field at offset …
Run Code Online (Sandbox Code Playgroud)

.net c# marshalling unions

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

编写OS X辅助功能客户端的文档在哪里?

Apple提供了将可访问性信息添加到自己的应用程序的文档.这允许辅助功能客户端控制该应用程序.但是,我找不到编写自己的辅助功能客户端的信息.我想通过他们的UI从OS X应用程序(不是通过AppleScript,ScriptingBridge或第三方框架,BTW)控制其他应用程序.我想写一个真正的辅助功能客户端 - 执行此操作的文档在哪里?

这是我到目前为止发现的:

  • 手动发送Quartz事件.这比OS X Yosemite附带的新辅助功能工具要低得多.
  • 一个古老的碳框架.这不适用于64位Mac.今天非常无用.
  • 此头文件包含有关控制应用程序的一些信息.它只是一个头文件 - 没有指南,没有例子.我也看不出如何从这个结构到1中描述的协议中的方法.

macos cocoa

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

SystemHandleInformation 的 NtQuerySystemInformation 的替代方案是什么?

NtQuerySystemInformation 已被 Microsoft 弃用,他们在文档页面上提供了用于完成相同任务的替代方法

但是,SystemHandleInformation查询没有其他选择。查询每个进程的打开文件句柄的新推荐方法是什么?

c windows internals

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

如何告诉 CMake 输出包搜索路径?

我正在Windows 上编译libdwarf。在其根目录中CMakeLists.txt,它尝试通过以下方式找到LibElf

find_package(LibElf REQUIRED)
Run Code Online (Sandbox Code Playgroud)

LibElf 不使用 CMAKE,我还没有配置它以任何方式注册自己,所以当然find_package失败了。我希望 CMake 打印出它在运行时搜索 LibElf 的所有路径。我如何告诉 CMake 输出这个?我已经尝试过,--trace但这只是向我展示了通过我的CMakeLists.txt文件的执行流程——而不是 CMake 本身目前正在寻找包的位置。

我知道find_package文档描述了 CMake 搜索的位置,但我可以使用各种变量、环境变量和注册表设置修改该行为。鉴于我对刚才提到的那些项目所做的所有修改,我想看看 CMake 的确切位置。

我应该注意到它libdwarf包含一个cmake/FindLibElf.cmake模块。如果FindLibElf.cmake可以自由地做任何想做的事,也许我要求的东西是不可能的?

windows cmake

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

在DWARF文件中,.debug_str和.strtab有什么区别?

我正在使用DWARF解析器,该解析器在本.debug_str节中查找字符串数据。在我正在解析的ELF文件中,字符串数据在该.strtab部分中。这两个部分有什么区别?都包含字符串,对不对?

elf dwarf

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

为什么在没有人阅读后继续写入命名管道?

我正在做一些实验来了解命名管道。我的理解是操作系统将阻止写入命名管道的程序,直到另一个程序从命名管道读取。所以我写了两个程序,startloopreadbyte. startloop创建一个 fifo 并在每次读取客户端 ( readbyte) 时不断写入它:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>

int main(int argc, char *argv[]) {
    const char num = 123;
    mkfifo("fifo", S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
    int fd = open("fifo", O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
    while (1) {
        printf("loop_start\n");
        write(fd, &num, sizeof(num));
    }
    close(fd);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

readbyte 运行时从 fifo 读取一个字节:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h> …
Run Code Online (Sandbox Code Playgroud)

c unix named-pipes

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

Modelica中的when语句中的离散状态机变量方程过多

我有一个人为设计的Modelica模型,其中有一个由多个when语句操纵的状态机变量:

model WhenExample
  type State = enumeration(first, second, third);

  State   state;
initial equation
  state = State.first;

equation
  when sample(0, 1) then
    state = State.second;
  end when;

  when sample(0, 3) then
    state = State.third;
  end when;
end WhenExample;
Run Code Online (Sandbox Code Playgroud)

在OpenModelica OMC下进行编译时,出现以下错误:

[1] 16:46:39 Symbolic Error
Too many equations, over-determined system. The model has 2 equation(s) and 1 variable(s).
Run Code Online (Sandbox Code Playgroud)

这有点有意义,因为我的单身确实有两个方程式state变量。但是,这些方程式仅适用于离散时间点,对吗?

我是否需要确保对特定变量的所有“操纵”仅在单个when语句中发生?

modelica openmodelica

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

标签 统计

c ×2

windows ×2

.net ×1

c# ×1

cmake ×1

cocoa ×1

dwarf ×1

elf ×1

internals ×1

macos ×1

marshalling ×1

modelica ×1

named-pipes ×1

openmodelica ×1

unions ×1

unix ×1