- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试从 Julia v0.6.2、Windows 10 调用 C 代码。
这是我用 Cygwin 编译成 DLL 的 C 代码海合会。
int timesTwo(int x) {
return 2*x;
}
编译命令:
gcc -c mydll.c
gcc -shared -o mydll.dll mydll.o
我用测试 C 程序测试了 DLL,它可以工作。然后我尝试使用 DLL 的绝对路径通过 Julia 调用它。
using Base.Libdl
x = Int32(2)
mylib = dlopen("C:\\Users\\pedro\\Documents\\codigos\\exampleDLL\\C\\mydll.dll")
ccall((:timesTwo, mylib), Int32, (Int32,), x)
然后 Julia 的工作区重新启动(所有变量在我使用命令 dlopen
后立即变为未定义)。
发生了什么,我该如何解决?
那肯定是windows的问题。无法在 Ubuntu 发行版中重现。
最佳答案
我会尝试使用 Julia 使用的相同编译器(带有 -fPIcflags)来构建您的 DLL。在 Windows 上,julia 实际上是用Cygwin 到 MinGW 交叉编译器:
https://github.com/JuliaLang/julia/blob/master/README.windows.md#cygwin-to-mingw-cross-compiling
你能安装 mingw64-x86_64-gcc-core 包(仅用于 C 编译器)并使用 x86_64-w64-mingw32-gcc 编译器命令(而不是 gcc)吗?
关于c - 使用 Libdl.dlopen 杀死 Julia,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49084874/
我一直在尝试将 linux 编译的预构建共享库与我的 android jni 应用程序一起使用,但是当我尝试运行该应用程序时,出现以下错误: 04-16 19:09:13.633: E/dalvikv
我正在尝试编译使用 libdl 库中的 API 的示例代码: #include #include #include int main(int argc, char **argv) { v
我想在 MinGW 中生成一个 dll 文件,为了做到这一点,我有几个对象依赖项,我的对象依赖项之一是 libdl.so,我在 unix 中简单地添加了这个对象: g++ xx.o yy.o /usr
请阐明调用这两者的区别,并建议我哪个在性能和效率方面更好。 handle = dlopen("libxx.so", RTLD_GLOBAL| RTLD_NOW); dlsym(handle, "fun
libdl 和 libltdl 有什么区别? 。我刚刚注意到 libodbc 链接到它们 ldd /usr/lib/x86_64-linux-gnu/libodbc.so.2 | grep -i dl
假设您有一个基于插件架构的应用程序,其中每个插件都是一个 *.so 文件,该文件使用 dlopen() 动态加载。 主应用程序可以通过dlsym() 引用符号,因此它可以调用插件的函数。插件如何调用主
我对Mac非常陌生,并尝试编译一些链接到libdl.so的代码。 我使用CMake配置项目,并且在CMakeList中具有: IF(UNIX) FIND_LIBRARY(LIBDL_L
我正在尝试从 Julia v0.6.2、Windows 10 调用 C 代码。 这是我用 Cygwin 编译成 DLL 的 C 代码海合会。 int timesTwo(int x) { ret
我在 CentOS 上使用黄金链接器链接 Intel MKL 和 libdl 时遇到问题: 当我运行这个脚本时: #!/bin/bash MKL_INC=$MKL_INSTALL_DIR/includ
我一直在玩弄,用 C 语言编写了一个小型 IRC 框架,现在我将使用一些核心功能对其进行扩展 - 但除此之外,我希望它可以通过插件进行扩展! 直到现在,每当我写一些 IRC 相关的东西(我写了很多,现
如果 gcc 编译的程序正在调用 dlopen,则必须在启用 -ldl 选项的情况下进行编译。这意味着这样的程序在运行时依赖库 libdl.so。事实上,通过对其执行 ldd,我们看到了这一行: li
由于 dlopen 使用 libdl.so ,但我正在开发不使用操作系统支持的独立应用程序,所以我的想法是直接使用编码实现 dlopen 有没有 最佳答案 加载共享库本质上依赖于操作系统系统的运行时加
我正在编写一个小项目,我想在其中调用共享库中的函数。为此,我想使用 libdl.so 的 dlopen() 函数。 我已设置好所有内容,因此当我将其作为 64 位应用程序构建和运行时它可以正常工作。但
我正在尝试为 Matrix Vision 销售的 USB 相机 (mvBlueFOX) 编译示例应用程序。他们为我提供了应用程序的源代码、一个 make 文件和一组预编译的共享库。但是,生成文件无法成
我只是在我的 FreeBsd mashine 上安装了 rabbitmq-3.7.8。 但是如果我跑 rabbitmqctl start ,然后得到错误是 找不到共享对象“libdl.so.1”,“b
我正在尝试在我的 c 程序中使用一些 cos/sin 函数和 dlopen/sym 函数,并将其包含在我的“BUILD”文件中: cc_binary( name = "hello-dl",
我使用的是 Ubuntu 14.04 我尝试使用 https://github.com/KDE/heaptrack用于检测正在运行的 C++ 程序中的内存泄漏 heaptrack shell脚本运行时
在 Android 6 之前,我们有一个应用程序的工作版本,它是使用 Qt Android 编写的,从 Android 6 开始,我们在 Nexus 设备中看到了奇怪的错误 dlopen 失败:无法找
我正在 CLion 中测试一个简单的问题,但被难住了:看来我无法在基本的 hello world 案例中包含使用 dlopen 的功能: #include #include using names
我想将一个二进制 linux 编译成完全静态的,但我总是用这个配置失败: CFLAGS="--static" CPPFLAGS="-I/home/alan/arm/arm-none-linux-gnu
我是一名优秀的程序员,十分优秀!