小编Dam*_*kis的帖子

Xcode 11 ld 错误“您的二进制文件不是 /usr/lib/libcrypto.dylib 的允许客户端”

我的项目使用 CMake 构建,但在 Mac 上构建时使用本地 macOS 版本的 clang 和 ld。

在 macOS 10.15 Catalina 上升级到 Xcode 11 后,我无法链接并出现以下错误:ld: cannot link directly with dylib/framework, your binary is not an allowed client of /usr/lib/libcrypto.dylib for architecture x86_64.

这与新应用公证有关吗?是否有不需要项目在 Xcode 中的修复(我使用 CLion 在 macOS 上开发)或不需要链接我自己的 OpenSSL 构建?

任何帮助表示赞赏。

clang ld libcrypto xcode11

13
推荐指数
3
解决办法
7164
查看次数

从包含它的目录之一为文件创建安全范围书签

我有一个目录的安全范围书签,由用户通过openDialog请求提供.

我正在尝试为此目录中的文件创建另一个安全范围书签:

NSURL *musicFolder = /* Secured URL Resolved from a NSData, bookmark not stale */;

if (![musicFolder startAccessingSecurityScopedResource]) {
    NSLog(@"Error accessing bookmark.");
}

NSString *file = @"myfile.txt"; /* This file exists inside the directory */
NSURL *pathURL = [musicFolder URLByAppendingPathComponent:file];

NSError *systemError;
NSData *bookmarkData = [pathURL bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope
                         includingResourceValuesForKeys:nil
                                          relativeToURL:nil
                                                  error:&systemError];

[musicFolder stopAccessingSecurityScopedResource];

if (!bookmarkData) {
    NSLog(@"%@", systemError);
}
Run Code Online (Sandbox Code Playgroud)

双方bookmarkDatasystemError最终为零这是不是很有用...

这甚至是支持还是只能从系统获得有效的安全范围书签?

cocoa sandbox appstore-sandbox

11
推荐指数
2
解决办法
3229
查看次数

沙箱扩展创建失败错误

在我的沙盒应用程序中,我试图将具有安全范围的NSURL放到粘贴板上,以便从NSTableView拖放到取景器(反之亦然).

拖动的代码非常简单,基本上在带有NSURL数组的粘贴板上执行writeObjects:

- (BOOL)   tableView:(NSTableView *)tv
writeRowsWithIndexes:(NSIndexSet *)rowIndexes
        toPasteboard:(NSPasteboard *)pasteboard
{
    Crate *selectedCrate = (Crate *)[self.cratesListController selectedObjects][0];

    NSMutableArray *pasteboardArray = [NSMutableArray array];
    [rowIndexes enumerateIndexesUsingBlock:^(NSUInteger rowIndex, BOOL *stop) {
        Track *selectedTrack = [self.tracksViewedInTrackList objectAtIndex:rowIndex];

        [selectedTrack addURLToPasteboardArray:pasteboardArray];
    }];

    if (!pasteboardArray.count) {
        return NO;
    }

    for (NSURL *url in pasteboardArray) {
        [url startAccessingSecurityScopedResource];
    }

    [pasteboard writeObjects:pasteboardArray];

    for (NSURL *url in pasteboardArray) {
        [url stopAccessingSecurityScopedResource];
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

这工作得很好,我实际上可以将文件放到我的桌面上,但我得到以下错误记录:

2013-11-19 10:29:30.897 Test[1287:532f] sandbox extension creation failed: permissions     error for path: [/Users/didier/Music/Gigs/Air Miles (2000 …
Run Code Online (Sandbox Code Playgroud)

cocoa drag-and-drop appstore-sandbox

11
推荐指数
0
解决办法
3139
查看次数

XCode不导入OS X崩溃日志

我的应用程序发送给我的应用程序崩溃日志.根据文档,我应该能够将其放入管理器中库的"设备日志"部分(或使用窗口底部的"导入"按钮).

不幸的是两者都没有.没有错误,没有警告,没有导入.

我的.crash文件是通过复制电子邮件的内容手工创建的,因此格式化可能不正确,将其与其他崩溃文件进行比较,但这似乎是正确的.

我有崩溃日志在我的档案中引用的构建,因为我知道这对于显示符号很重要.

知道如何调试这个吗?这是使用Xcode 4.4.1

xcode xcode4

5
推荐指数
2
解决办法
2382
查看次数

使用 openssl C API 构建 ASN1 集

我正在尝试使用 openssl C API 构建一组序列。正如在各个地方所指出的,关于此的文档非常稀疏,并且代码示例似乎不存在。

我在网上找到了各种建议,但似乎没有一个能正常工作。

为了创建序列我已经做到了这一点:

#include <openssl/asn1t.h>

countdef struct StringStructure {
    ASN1_INTEGER *count;
    ASN1_INTEGER *asnVersion;
    ASN1_OCTET_STRING *value;
} StringSequence;

DECLARE_ASN1_FUNCTIONS(StringSequence)

ASN1_SEQUENCE(StringSequence) = {
    ASN1_SIMPLE(StringSequence, count, ASN1_INTEGER),
    ASN1_SIMPLE(StringSequence, asnVersion, ASN1_INTEGER),
    ASN1_SIMPLE(StringSequence, value, ASN1_OCTET_STRING),
} ASN1_SEQUENCE_END(StringSequence)

IMPLEMENT_ASN1_FUNCTIONS(StringSequence)

auto aSeq = StringSequence_new();
aSeq->count = ASN1_INTEGER_new();
aSeq->asnVersion = ASN1_INTEGER_new();
aSeq->value = ASN1_OCTET_STRING_new();
if (!ASN1_INTEGER_set(aSeq->count, 10) ||
    !ASN1_INTEGER_set(aSeq->asnVersion, 1) ||
    !ASN1_STRING_set(aSeq->value, "Test", -1)) {
    // -- Error
}

auto anotherSeq = StringSequence_new();
anotherSeq->count = ASN1_INTEGER_new();
anotherSeq->asnVersion = ASN1_INTEGER_new();
anotherSeq->value = ASN1_OCTET_STRING_new();
if (!ASN1_INTEGER_set(anotherSeq->count, …
Run Code Online (Sandbox Code Playgroud)

c openssl asn.1

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