在 OS X 上初始化 D 运行时

2023-12-24

编辑:这似乎是一个长期存在的问题,没有迫在眉睫的解决方案:http://d.puremagic.com/issues/show_bug.cgi?id=8133 http://d.puremagic.com/issues/show_bug.cgi?id=8133 http://www.digitalmars.com/d/archives/digitalmars/D/Ideas_for_runtime_loading_of_shared_libraries._154126.html http://www.digitalmars.com/d/archives/digitalmars/D/Ideas_for_runtime_loading_of_shared_libraries._154126.html http://lists.puremagic.com/pipermail/dmd-internals/2011-December/002853.html http://lists.puremagic.com/pipermail/dmd-internals/2011-December/002853.html

在 C 程序中加载的 d dylib 中启动 d 运行时似乎存在问题。每当我调用 Runtime.initialize() 时,我都会遇到段错误。

C code:

#include <stdio.h>
#include <dlfcn.h>

int main() {
    void *library;
    int (*fptr)();
    library = dlopen("testlib.dylib", RTLD_LAZY);
    if(library == NULL)
        puts("couldn't load the library");
    else {
        *(void **)(&fptr) = dlsym(library,"number");
        if(fptr == NULL) {
        puts("couldn't load function");
        } 
        else {
            printf("the result is %d\n",(*fptr)());
        }
    }
    return(0);
}

用 gcc 编译,没有标志。

d code:

import core.runtime;

extern(C) int number() {
    Runtime.initialize();
    return(4);
}

使用 dmd -shared 编译

回溯:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: 13 at address: 0x0000000000000000
0x000000010003de28 in __tls_get_addr ()
(gdb) bt
#0  0x000000010003de28 in __tls_get_addr ()
#1  0x000000010003cdfc in thread_attachThis ()
#2  0x000000010003ccb8 in thread_init ()
#3  0x000000010003e312 in gc_init ()
#4  0x0000000100044ff5 in rt_init ()
#5  0x000000010003b637 in D4core7runtime7Runtime10initializeFDFC6object9ThrowableZvZb ()
#6  0x0000000100034ee9 in number ()
#7  0x0000000100000e84 in main ()

所有编译和调试均在 OS X 10.7 中完成

注意:如果Runtime.initialize();行被注释掉,库被加载并正确运行。


现在,这个问题已在 github 的最新 druntime 中修复

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OS X 上初始化 D 运行时 的相关文章

  • 为什么是 SIGSEGV?

    为什么这段代码会抛出一个SIGSEGV http en wikipedia org wiki SIGSEGV int main unsigned long toshuffle 9765625 unsigned long i for i 0
  • 使用 fopen 时出现段错误

    我从以下代码的第二行收到段错误 FILE output NULL output fopen output2 txt w 我不认为这是某种损坏的内存错误 因为当我将 w 更改为 r 时 它运行时没有段错误 另外 它似乎是在出现段错误之前创建该
  • 分段错误 p_thread 可能存在竞争条件

    问题 我创建了子线程 TIDS 的链接列表 并希望在继续主线程之前等待所有子线程 TIDS 完成执行 基本上我有目录遍历 目录由给定的成员指定struct 每次我看到一个目录或文件时 我都会创建一个新线程并将其放入threadID进入链表
  • ld:找不到 -lz.1.2.3 的库

    当尝试编译适用于 iOS 5 的软件时 XCode 4 2 抛出错误 ld library not found for lz 1 2 3 我发现这篇文章告诉我替换 1 2 3 与 1 2 5 https github com dbloete
  • 给出分割错误的 2D 矢量

    我正在尝试使用向量创建一个二维数组 我编写了以下代码 int main vector lt vector
  • 如何在iOS项目中使用dylib库和hpp头文件?

    我已经获得了一个 dylib 库和一个 hpp 头文件 我应该在 Xcode 中的 iOS 项目中使用它们 我一直在网上查找 但所有答案都很简洁 没有具体的步骤可遵循 我只需将这些文件复制到我的项目中吗 如何在 Obj C 类中创建 使用库
  • C指针指针和段错误

    下面是我用 C 编写的简单链表 我的问题是在 headRef newNode 中这会导致分段错误 然后我尝试 headRef newNode 这解决了seg错误问题 尽管这两行代码在我看来似乎以相同的方式工作 但为什么一行代码会导致段错误
  • Brew doctor:dyld:库未加载&错误:zlib 没有可用的公式

    When I brew doctor我收到以下错误 dyld Library not loaded usr lib libltdl 7 dylib Referenced from usr local bin php Reason image
  • 线程安全的向量和字符串容器?

    我之前发过一个问题 在嵌入式 Linux 平台上使用 std string 时出现段错误 https stackoverflow com questions 2412667 seg fault when using stdstring on
  • 使用 Dlang 计算目录中的文件数

    我想要一种简单的方法来使用 D 来计算目录中的文件数量 据我从 D 手册中可以看出 dirEntries 返回一个范围 但它没有长度属性 因此 我必须用计数器迭代结果 或者收集传统数组中的名称 我可以找到它的长度 有更好的方法吗 auto
  • C 中的递归深度是否有任何硬连线限制

    正在讨论的程序尝试计算sum of first n natural numbers using recursion 我知道这可以使用一个简单的公式来完成n n 1 2但这里的想法是使用recursion 程序如下 include
  • iOS Swift:iOS 8 上的 unsafeMutableAddressor 崩溃

    通过堆栈跟踪 unsafeMutableAddressor崩溃似乎是在访问时AppConstant kShowOverlay从控制器的viewDidLoad 我已经定义了AppConstant swift像下面这样 struct AppCo
  • 我可以执行驻留在数据段(ELF 二进制)中的代码吗?

    在理解二进制文件 虚拟内存布局 执行 等 的方式中 我写了一个C声明一个全局字符串的代码 其中包含可执行代码的字节 然后我覆盖了返回地址main 通过声明一个指针 PTR in main 这是保留在堆栈上的本地内存区域 距离返回地址较远 2
  • 打印后出现奇怪的分段错误

    写了一个简单的交换程序 效果很好 但给出了一个分段故障打印完所有内容后 include
  • 将 Mac 二进制文件加载为动态库

    我正在使用没有源代码的二进制可执行文件进行一些逆向工程 在 Windows 上 我可以做的是使用 LoadLibrary 加载可执行文件 EXE 就像它是 DLL 文件一样 如果加载的文件不可重定位 我可以简单地重新定位加载器代码 为其他模
  • Tango 的未来与 D1 的停产

    知道D1 will be discontinued effective December 31 2012 鉴于官方发行版位于 D1 之下 是否还值得继续使用 Tango 如果您谈论的是一旦 D1 的官方支持消失 是否值得继续使用 Tango
  • mpi.h:使用未定义的类型?

    我正在尝试将 OpenMPI 的 mpi h 的重要部分翻译为 D 编程语言 以便我可以从 D 调用它 HTOD 根本不起作用 我无法理解以下代码段 typedef struct ompi communicator t MPI Comm O
  • RSpec 抛出分段错误

    有时我的测试套件会无缘无故地抛出分段错误 这是输出 Users Test rvm gems ruby 1 9 3 p392 gems activerecord 3 2 9 lib active record relation query m
  • POSIX 线程和 SIGSEGV

    我的系统有 10 多个线程 我有一个信号处理程序来捕获 SIGSEGV 如果一个线程生成 SIGSEGV 该信号是否会发送到所有线程 还是仅发送到生成该信号的线程 SIGSEGV是同步信号 它将被传递到导致无效内存访问的线程 从signal
  • WebCore::UserGestureIndicator::processingUserGesture 中的 EXC_BAD_ACCESS (SIGSEGV)

    我有一个使用 UIWebView 和 HTML5 websockets 构建的 iOS 应用程序 该应用程序经历了看似随机的崩溃 它发生在用户与其交互时以及在用户和应用程序之间没有发生交互的寿命测试期间 崩溃日志都有以下内容 Excepti

随机推荐

  • PHP:允许 url_include

    快 可能是愚蠢的问题 当allow url include设置为关闭时 是否会禁止其他计算机远程包含我网站上的文件 或者是否表示不允许我远程包含来自其他网站的文件 设置在yourphp ini 只影响yourPHP安装
  • 使用 Python.h 编译错误 gcc

    我正在尝试将 python 嵌入到 c 中 并且我已经使用一些示例代码一段时间了 我正在使用 boost python 解释器 它工作正常 但现在我似乎无法编译一些使用 Python h 的 c 代码 我收到一个错误 似乎是库没有正确引用
  • 将“await”与lazy_static一起使用的替代方法!宏观生锈?

    我想在项目中使用异步 MongoDB 我不想绕过客户端 因为它需要绕过多个任务和线程 所以我保留了一个静态客户端lazy static 但是 我不能使用await在初始化块中 我可以做些什么来解决这个问题 无需这样做的建议lazy stat
  • SELECT 语句包含拼写错误或缺失的保留字或参数名称,或者标点符号不正确。错误信息

    非常感谢那些回答我问题的人 我很着急 所以我现在需要解决这个问题 这是另一个错误 代码如下 Private Sub RefreshData If Not cnn State ConnectionState Open Then cnn Ope
  • 如何在 JSF 2 + RichFaces 4 中的输入字段中使用掩码?

    我需要在表单的输入字段中添加一些掩码 我尝试插入jQuery js and jQuery MaskedInput js如下代码所示
  • 为什么当 SBT 程序集发现冲突时 Maven 程序集可以工作

    标题也可以是 Maven 和 SBT 组装插件之间有什么区别 在将项目从 Maven 迁移到 SBT 时 我发现这是一个问题 为了描述这个问题 我创建了一个示例项目 其中的依赖项我发现它的行为有所不同 具体取决于构建工具 https git
  • 从 Bash 脚本在 PostgreSQL 中创建 FUNCTION

    我正在尝试从 Bash 脚本在 Postgres 数据库中创建一个函数 不幸的是 我无法让它工作 这是我的脚本 bin bash Save Postgres command to POSTGRES CMD read d POSTGRES C
  • 在pyspark中将列的内容拆分为行

    我有一个数据框 df SiteID LastRecID Col to split 2 1056962584 214 207 206 205 2 1056967423 213 208 2 1056870114 213 202 199 2 10
  • 为什么Delphi DLL可以使用WideString而不使用ShareMem?

    大卫对另一个问题的回答 https stackoverflow com a 9328272 937125显示返回 WideString 的 Delphi DLL 函数 我从来没有想过如果不使用ShareMem 我的测试DLL functio
  • WordPress:ACF 将行添加到重复器字段

    我正在寻找一种将行添加到 ACF Pro 中的重复器字段的方法 我发现这个帖子 https stackoverflow com questions 24879399 wordpress acf how to add rows to a re
  • 从 MIDI 文件中获取音符数据

    有没有办法从 MIDI 文件中获取音符数据 也就是说 我想将 MIDI 文件分解为其组成部分 以便它们采用唯一单词 或任何其他数据类型 的形式 我最终想要做的是接收 MIDI 文件并在音符中找到模式 进入每个音符 找到它的 被演奏的 频率
  • 为什么React中全局变量执行了两次

    我是前端开发和学习 React 的新手 现在我正在尝试构建一个 hello world 项目 执行后npx create react app myapp 我得到了一个初始的 React 项目 我刚刚在文件中编码App js import R
  • 无法创建套接字工厂“com.google.cloud.sql.mysql.SocketFactory;”

    我似乎无法让这个工作 我在用谷歌灵活的环境并想要连接到我的第二代云SQL数据库 我目前收到此异常 main ERROR com mahlzeit server BootstrappingServerConfig Error trying t
  • Rails:通过 ActiveResource 调用设计身份验证

    我的两个 Rails 应用程序 app1 app2 正在使用活动资源进行通信 app1 调用 app2 在 app2 内创建用户 app2 将创建用户 并希望 app1 然后将用户重定向到 app2 的经过身份验证的页面 从 app1 到
  • 为什么即使 SQL 语句产生语法错误,SQL 注入也会成功?

    In 这个问题 https stackoverflow com q 11873585 869912和一些评论 这个输入 input DELETE FROM table name 建议将 SQL 注入到此 PHP 语句中作为示例 input
  • C++ 中字符串向量的 Reserve() 函数

    我正在尝试填充字符串类型的向量 并且字符串的内存将定期更新 我在论坛中发现 由于每次更新大小时内存重新分配 这两个过程都会消耗大量时间另请阅读 储备功能几乎解决了这两种情况的问题 gt String http www cplusplus c
  • Twig 模板单元测试

    我开始考虑 Symfony 中 Twig 模板的持续集成 模板是独立的逻辑 模板中有错误 但在开发过程中我不想因为目视检查而分心 在 Symfony 中是否有任何现成的解决方案可以对 twig 文件进行单元测试 测试树枝模板中的语法错误 您
  • 如何限制 RAM 以测试内存不足的情况?

    我正在尝试重现当用户用完大量 RAM 时似乎出现的错误 限制计算机可以使用的可用 RAM 或填满大部分 RAM 的最佳方法是什么 我更愿意在不物理删除内存的情况下执行此操作 并且不运行一堆任意的内存密集型程序 即 Photoshop Qua
  • Asp.NET Core 2.1 HostedService - 继续在 Azure 上运行

    我们有一个使用 IHostedService 的 Web 应用程序 有一个这样的例子here https gist github com davidfowl a7dd5064d9dcf35b6eae1a7953d615e3 我们采用的方法是
  • 在 OS X 上初始化 D 运行时

    编辑 这似乎是一个长期存在的问题 没有迫在眉睫的解决方案 http d puremagic com issues show bug cgi id 8133 http d puremagic com issues show bug cgi i