使用 CFBundleCreate 在 C++ 中的 Mac 上加载动态共享库 (DLL)
Load a dynamic shared library (DLL) on Mac in C++ using CFBundleCreate
如何使用 C++ 实现在 Mac OS 上加载 dll(又名框架)的函数?
void LoadFramework(const char* frameworkPath)
{
//frameworkPath is the absolute path of the framework
}
编辑:
当我 google 搜索这个问题时,我大多以 dlopen 解决方案来加载框架。我正在寻找的是使用 CFBundleCreate 来加载框架。在我看来,需要调用许多方法才能从 const char * 路径构造 URL 。把需要的代码找了个零零碎碎的,写不出一个完整的解决方案。
通常只需几行简单的代码即可在 Mac 中打开一个框架,类似于 :
bundleURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault,
CFSTR("/System/Library/Frameworks/<your_framework_name.framework>"),
kCFURLPOSIXPathStyle, true);
bundle = CFBundleCreate(kCFAllocatorDefault, bundleURL);
assert(bundle != NULL);
并且该片段中的几乎所有内容都有详细记录。我建议在问题中添加更多细节,具体说明什么对你不起作用。
为什么不这样做?
using DLL_Namespace;
这应该可以让您访问 DLL。
如何使用 C++ 实现在 Mac OS 上加载 dll(又名框架)的函数?
void LoadFramework(const char* frameworkPath)
{
//frameworkPath is the absolute path of the framework
}
编辑:
当我 google 搜索这个问题时,我大多以 dlopen 解决方案来加载框架。我正在寻找的是使用 CFBundleCreate 来加载框架。在我看来,需要调用许多方法才能从 const char * 路径构造 URL 。把需要的代码找了个零零碎碎的,写不出一个完整的解决方案。
通常只需几行简单的代码即可在 Mac 中打开一个框架,类似于 :
bundleURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault,
CFSTR("/System/Library/Frameworks/<your_framework_name.framework>"),
kCFURLPOSIXPathStyle, true);
bundle = CFBundleCreate(kCFAllocatorDefault, bundleURL);
assert(bundle != NULL);
并且该片段中的几乎所有内容都有详细记录。我建议在问题中添加更多细节,具体说明什么对你不起作用。
为什么不这样做?
using DLL_Namespace;
这应该可以让您访问 DLL。