gpt4 book ai didi

c++ - 在不使用基础的情况下从 C++ 获取包路径

转载 作者:行者123 更新时间:2023-11-28 06:24:54 25 4
gpt4 key购买 nike

我目前正在开发一款 Chromium 嵌入式框架应用。该项目由一个客户和一个助手组成。我需要知道来自帮助器的包路径,只需使用基础方法就很容易......好吧,我不能,因为我不能在帮助器中使用基础。

客户端是一个基于 C++ 的内核,包裹在一个 Objective-C++ Cocoa 应用程序中。

助手是纯 C++。

这两个应用程序共享一个自定义类,用于基于进程类型的行为(参见下面的代码)。 “OnBeforeCommandLineProcessing”方法需要使用包路径! (只是将文件结尾更改为 .mm 并导入 foundation/cocoa 是行不通的,一旦我导入 foundation,事情就会变得丑陋,并出现大量错误)。如何在没有基础的情况下从 C++ 获取包路径? 这不起作用:mainBundle = CFBundleGetMainBundle();

namespace client {

// Base class for customizing process-type-based behavior.
class ClientApp : public CefApp {
public:
ClientApp();

enum ProcessType {
BrowserProcess,
RendererProcess,
ZygoteProcess,
OtherProcess,
};

// Determine the process type based on command-line arguments.
static ProcessType GetProcessType(CefRefPtr<CefCommandLine> command_line);

protected:
// Schemes that will be registered with the global cookie manager.
std::vector<CefString> cookieable_schemes_;

private:
// Registers custom schemes. Implemented by cefclient in
// client_app_delegates_common.cc
static void RegisterCustomSchemes(CefRefPtr<CefSchemeRegistrar> registrar,
std::vector<CefString>& cookiable_schemes);

void OnBeforeCommandLineProcessing(const CefString& process_type,
CefRefPtr<CefCommandLine> command_line) OVERRIDE;


// CefApp methods.
void OnRegisterCustomSchemes(
CefRefPtr<CefSchemeRegistrar> registrar) OVERRIDE;

DISALLOW_COPY_AND_ASSIGN(ClientApp);
};


} // namespace client

#endif // CEF_TESTS_CEFCLIENT_COMMON_CLIENT_APP_H_

重命名为 .mm 后尝试导入 cocoa/foundation:

enter image description here

最佳答案

您正在导入 Foundation.h当你说 #include <CoreFoundation/CoreFoundation.h> . Foundation 是一个 ObjC API(与 C++ 不兼容)。 Core Foundation 是一个 C API。当您包含 CoreFoundation 时,CFBundleGetMainBundle()应该没事。注意 CF一开始就表明它是 Core Foundation 的一部分,对比 NS这表示 Foundation(或 AppKit)。

无需重命名 .mm .只要用CoreFoundation,当个纯C++文件就好了。请记住,Core Foundation 有自己的内存管理。没有 ARC。你需要记住CFRelease使用带有 Create 的函数获得的任何内容或 Copy在它的名字中(或者你叫 CFRetain 的名字。完整的细节在 Memory Management Programming Guide for Core Foundation 中。

关于c++ - 在不使用基础的情况下从 C++ 获取包路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28703258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com