标签: dylib

MAC OSX dylib以及如何使用它们

我在Mac OSX(Lion)上下载并安装了(我认为)gtk.在得到所有-I是正确的之后,测试程序的编译很顺利.现在链接失败了.缺少入口点的grep

_gtk_init
_gtk_window_new
... 11 more
Run Code Online (Sandbox Code Playgroud)

在/Users/ccpalmer/gtk/inst/lib/libgtk-quartz-2.0.0.dylib /Users/ccpalmer/gtk/inst/lib/libgtk-quartz-2.0.dylib中找到它们

不太熟悉OSX的底层Unix,我不知道如何通过链接步骤.我必须承认,我以前从未遇到过"dylib".

是否有任何OSX开发技术专家可以揭开我的神秘面纱?

查尔斯

macos dylib

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

如何从依赖包中重新导出 dylib 符号

使用 Xcode,我希望从 mach-o 捆绑包二进制文件中重新导出符号(具体来说是一个函数),该符号最初是在 dylib 中定义的。

我已经尝试过 -sub_library 链接器开关,但这似乎没有重新导出 dylib 符号,可能是因为我自己没有构建 dylib(?)

Xcode 的链接器似乎不支持 reexport-l / reexport_library 开关。

有任何想法吗?

xcode linker dylib

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

库 (dylib) 未加载 - 未找到图像 - Python IDE

基本上,我尝试从 savReaderWriter 模块运行一些 Python 代码,以便创建一个可以在 IBM SPSS 中打开的 .sav 文件。作为 macOS 用户,我需要首先在终端中运行这两行以使模块正常工作:

echo 'export DYLD_LIBRARY_PATH=/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/savReaderWriter/spssio/macos'  >> ~/.bash_profile
echo 'export LC_ALL=en_US.UTF-8'  >> ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

下面你可以看到我尝试在 Python 中运行的一段代码:

import savReaderWriter

savFileName = "someFile.sav"
records = [['Test1', 1, 1], ['Test2', 2, 1]]
varNames = ['var1', 'v2', 'v3']
varTypes = {'var1': 5, 'v2': 0, 'v3': 0}
with savReaderWriter.SavWriter(savFileName, varNames, varTypes, ioUtf8=True) as writer:
    for record in records:
        writer.writerow(record)
Run Code Online (Sandbox Code Playgroud)

我的问题是,虽然通过 Terminal.app 在 Python 中运行代码就像一个超级按钮,并且出现一个新的 .sav 文件,但尝试在 IDE 中执行完全相同的代码(尝试过 PyCharm 和 Spyder)会出现错误:

Traceback (most recent call last): …
Run Code Online (Sandbox Code Playgroud)

python ide spss dylib

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

当前版本和兼容版本在 macOS 上的使用情况

在 macOS 上,dylib 有一个兼容版本和一个当前版本作为元数据,每个版本都有x.y.z.. otool -L可以显示这些。

系统或各种工具/程序如何以及何时使用这些版本?

对于兼容性版本,我发现:

  • 当将程序链接到库时,该库的兼容版本将被记录到程序中。动态链接器将拒绝链接到兼容版本小于记录版本的库。(参考,尽管这是针对框架的)。

问题:

  • 系统(例如动态链接器)在任何情况下都使用当前版本吗?
  • 在比较兼容版本时,是否使用了该方案的所有部分x.y.z?比较是字典顺序吗?还是x、y、z分别有特殊含义?
  • 是否有有关使用这些版本号的文档?请注意,我询问的是它们在实践中实际使用的地点/时间,而不仅仅是建议如何设置它们的指南。
  • 系统的任何部分是否对元数据中的两种类型的版本应如何与文件名或为库创建的符号链接名称相关有任何期望?例如,ls -l /usr/lib/libz*我看到同一个库有许多不同的符号链接,每个符号链接的名称都有不同的版本。

macos version shared-libraries dylib dynamic-linking

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

如何找到 Python 的 libpython 所在位置?

我在 macOS 上使用 Conda,在构建 Rust 包时遇到错误,无法找到该libpython3.7m.dylib库。我怎样才能找到这个?

经过一些研究后,在 Linux 上,您通常可以从python-devUbuntu 上安装它,或者通过在 Python 编译期间启用 --enabled-shared 来安装它。

python macos dylib

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

如何确定OS X dylib是否与-flat_namespace链接

我有一个第三方OS X dylib,我正在我的应用程序中使用,并且无法轻松访问其创建者.我想确定它是否与-flat_namespace链接.那可能吗?如果是这样,怎么样?

macos xcode dylib dynamic-linking dyld

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

在混合C C++代码时链接动态库中的问题

我有一个C动态库,由于一些需求变化,我必须做一些重构.

我在一个c文件中有以下代码.

__attribute__((noinline))
static void *find_document(...)
{
  ...
}

bool docuemnt_found(const char *name) {
 ...
    find_document(...);
 ...
}
Run Code Online (Sandbox Code Playgroud)

我在不同的cpp文件中分离了docuemnt_found()函数.现在docuemnt_found()函数无法链接到find_document()方法?

我尝试为c文件创建标题然后包含标题使用extern "C"但它不起作用.

我想保持find_document()内联.这里有什么遗漏或有什么不对吗?

c c++ gcc dylib

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

在Xcode 4项目模板中包含libsqlite3 dylib

我为iOS创建了一个Xcode 4项目模板,它依赖于几个框架和libsqlite3.dylib.我已经能够自动添加框架,但似乎无法弄清楚如何添加dylib.有人有运气吗?

编辑:
我想我不够清楚,我创建了自己的.xcodetemplate文件,当我创建一个新项目时,该文件显示为项目模板.我需要知道在TemplateInfo.plist文件中放置什么以使libsqlite3.dylib文件包含在从模板创建的新项目中.我已成功地通过在目标 - >项目0->框架键下列出它们来添加诸如CoreMotion之类的.framework文件,但这对dylib不起作用.

sqlite xcode dylib xcode4 xcode4.2

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

在firemonkey中加载dylib

我将我的应用程序转换为firemonkey的第一步是转换我的应用程序使用的一些dll.

任何人都可以指出一些有助于我完成此过程的文档吗?dll的设计考虑了跨平台(使用尽可能多的增强功能),所以一旦我了解它,我不会太担心dll的内部.

几个具体问题......

  1. 在delphi端,LoadLibrary和GetProcAddress是wind32 API的一部分.我找不到其他平台的文档?

  2. 在XCode中,我创建了一个动态库项目,可以看到"GCC可见性"如何对导出的类起作用.我假设它只是被绑定的功能相同.如何设置导出类型.即外部"C"?

提前致谢.

马丁

c++ delphi dll dylib firemonkey

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

iOS 6.1动态库构建和链接

我正在尝试为iOS创建一个动态库并在运行时加载它.在看了这个问题这个答案之后,我一直在使用iOSOpenDev并在我的iPhone上部署所有内容.dylib的xCode项目名为KDylibTwo,我修改的文件是:

KDylibTwo.h

#import <Foundation/Foundation.h>

@interface KDylibTwo : NSObject
-(void)run;
@end
Run Code Online (Sandbox Code Playgroud)

KDylibTwo.m

#import "KDylibTwo.h"

@implementation KDylibTwo

-(id)init
{
    if ((self = [super init]))
    {
    }

    return self;
}

-(void)run{
    NSLog(@"KDylibTwo loadded.");
}

@end
Run Code Online (Sandbox Code Playgroud)

为了测试我的库是否有效,在构建它以进行性能分析后(iOSOpenDev在iPhone上部署它的方式),我可以找到它存储在我的设备上/usr/lib/libKDylibTwo.dylib并构建一个调整(再次使用iOSOpenDev),按如下方式挂接SpringBoard:

#include <dlfcn.h>

%hook SBApplicationIcon

-(void)launch{
    NSLog(@"\n\n\n\n\n\n\nSBHook For libKDylibTwo.dylib");

    void* dylibLink = dlopen("/usr/lib/libKDylibTwo.dylib", RTLD_NOW);

    if(dylibLink == NULL) {
        NSLog(@"Loading failed.");
    } else {
        NSLog(@"Dylib loaded.");

        void (*function)(void);
        *(void **)(&function) = dlsym(dylibLink, "run");
        if (function) {
            NSLog(@"Function found.");
            (*function)();
        } else {
            NSLog(@"Function …
Run Code Online (Sandbox Code Playgroud)

dylib jailbreak iphone-privateapi ios

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