【问题标题】:Load a dynamic shared library (DLL) on Mac in C++ using CFBundleCreate在 Mac 上使用 CFBundleCreate 在 C++ 中加载动态共享库 (DLL)
【发布时间】:2019-11-17 16:40:43
【问题描述】:

如何使用 C++ 在 Mac OS 上实现加载 dll(又名框架)的函数?
void LoadFramework(const char* frameworkPath) { //frameworkPath is the absolute path of the framework }

编辑:
当我用谷歌搜索这个问题时,我大多以 dlopen 解决方案来加载框架。我正在寻找的是使用 CFBundleCreate 来加载框架。在我看来,需要调用一堆方法来从 const char * 路径构造 URL。我找到了需要的代码,无法编写一个全面的解决方案。

【问题讨论】:

  • Google 搜索“加载共享库 mac”会显示一个指向 developer.apple.com 的链接,该链接讨论了该特定主题,并特别提到了执行此操作的库函数。您是否尝试过通过 Google 搜索对此进行一些研究?您发现了什么,您对文档的哪一部分有具体疑问?
  • 根据@Sam 的上述评论,我现在将编辑我的问题以更具体。谢谢!

标签: c++ macos dll frameworks cfbundleidentifier


【解决方案1】:

在 Mac 中打开框架通常只需几行简单的代码,类似于:

bundleURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault,
    CFSTR("/System/Library/Frameworks/<your_framework_name.framework>"),
    kCFURLPOSIXPathStyle, true);

bundle = CFBundleCreate(kCFAllocatorDefault, bundleURL);
assert(bundle != NULL);

而且该 sn-p 中的几乎所有内容都有很好的文档记录。我建议在问题中添加更多详细信息,具体说明哪些内容不适合您。

【讨论】:

  • 是的,这段代码是我上周最终写的。谢谢!我倾向于不同意这个 sn-p 中的所有内容都有据可查。这对我来说并不那么容易。
【解决方案2】:

为什么不这样做?

using DLL_Namespace;

这应该可以让您访问 DLL。

【讨论】:

  • 欢迎来到 Stackoverflow!你能扩展一下你的答案吗?在问题的上下文中如何使用这条线?你能举个例子说明这是如何工作的吗?
猜你喜欢
  • 2014-03-04
  • 2012-10-07
  • 2014-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-31
  • 1970-01-01
  • 2019-02-10
相关资源
最近更新 更多