小编Apo*_*vaJ的帖子

加载时链接期间的符号地址与Linux中的运行时链接

我试图了解Linux中动态库的加载时间链接(使用gcc -l)与运行时链接(使用dlopen(), dlsym())的机制差异,以及这些机制如何影响库的状态及其符号的地址.

本实验

我有三个简单的文件:

libhello.c:

int var;
int func() {
    return 7;
}
Run Code Online (Sandbox Code Playgroud)

libhello.h:

extern int var;
int func();
Run Code Online (Sandbox Code Playgroud)

main.c中:

#include <inttypes.h>
#include <stdio.h>
#include <stdint.h>
#include <dlfcn.h>
#include "libhello.h"

int main() {
    void* h = dlopen("libhello.so", RTLD_NOW);
    printf("Address  Load-time linking    Run-time linking\n");
    printf("-------  -----------------    ----------------\n");
    printf("&var     0x%016" PRIxPTR "   0x%016" PRIxPTR "\n", (uintptr_t)&var , (uintptr_t)dlsym(h, "var" ));
    printf("&func    0x%016" PRIxPTR "   0x%016" PRIxPTR "\n", (uintptr_t)&func, (uintptr_t)dlsym(h, "func"));
}
Run Code Online (Sandbox Code Playgroud)

我用命令编译libhello.c gcc -shared -o libhello.so -fPIC …

c c++ linux gcc dynamic-linking

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

Windows中OpenCV-Python的自动完成功能不起作用

我无法在Windows上为OpenCV(Python)自动完成工作。

根据此处的 Abid的说明,我将cv2.pyd文件粘贴到C:\ Python27 \ Lib \ site-packages中。

在Python代码中,我如下导入:

import cv2.cv as cv
Run Code Online (Sandbox Code Playgroud)

我还安装了numpy,它在站点包中创建了自己的文件夹,这与OpenCV不同(我直接将其粘贴到站点包中)。

使用此设置,即使调用OpenCV方法,代码也不会出现任何问题。

但是我无法自动完成工作。我试图使其在Sublime Text 2(与SublimeCodeIntel)和PyCharm上一起工作。在两个IDE中,自动完成功能都适用于numpy导入,但不适用于OpenCV导入。

我正在使用OpenCV 2.4.6和Python 2.7(32位)。

任何可能的解决方案?

python opencv autocomplete pycharm sublimetext2

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

PIL Image.save() 函数在 Blender python 中失败

我正在为Blender 2.69 开发一个插件。我在插件中使用 PIL 库的图像模块。

根据我在互联网上找到的说明,我首先安装了PIL for Python33,然后将Python的site-packages中的文件夹复制到Blender的同一文件夹中。

Image.open() 等函数可以工作,读取 Exif 数据的函数也可以工作。

但是,以下语句失败,Blender 崩溃。

img.save(outputFileName)
Run Code Online (Sandbox Code Playgroud)

save()方法位于PIL的Image.py模块中。以下是相关部分:

try:
    import builtins
except ImportError:
    import __builtin__
    builtins = __builtin__
...
...
def save(self, fp, format=None, **params):
    ...
    try:
        # Following statement fails, and Blender crashes.
        save_handler(self, fp, filename)
    finally:
        if close:
            fp.close()
Run Code Online (Sandbox Code Playgroud)

当使用 Python 3.3 解释器(而不是 Blender 解释器)执行时,同样的语句也有效。仅当图像格式为 PNG 时,此语句也适用于 Blender。对于所有其他格式(TIFF、PGM、JPEG 等),它会失败(在 Blender 中)。

我做了一些挖掘,最近在 Pillow github 存储库上报告了几个问题:(1) (2)

更有趣的是2009 年的这篇论坛帖子,其中报告了 Maya 的 Python 解释器内完全相同的行为。

发生这种情况时,我在 Blender 中找不到堆栈跟踪,因为 Blender …

python blender python-imaging-library

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