dylib 中笔尖的窗口

发布于 2024-09-07 14:50:39 字数 309 浏览 7 评论 0原文

我对 Mac 相当陌生,但对 Windows 相当有经验。 我需要的是一个由图书馆(dylib)打开和关闭的窗口。 这在 MS Windows 中很容易做到,但在 Cocoa 中似乎并不难。

我将苹果的“CocoaInCarbon”示例中的代码与 C++ 包装器一起使用。 但是 NSApplicationLoad() 后跟 [NSBundle LoadNibNamed:@"MyWindow"owner:self] 失败。这是由于 dylib 不是捆绑包引起的吗?

是否有其他方法可以在 dylib 中打开和控制窗口?

I'm quite new to the Mac but reasonably expirienced with windows.
What I need is a window owned opened and closed by the library (dylib).
This is very easy to do in MS Windows but seems not be hard under Cocoa.

I used the code from apple's 'CocoaInCarbon' example with C++ Wrappers.
But the NSApplicationLoad() followed by [NSBundle LoadNibNamed:@"MyWindow" owner:self] fails. Is this caused by the dylib not being a bundle.

Are there alternative ways to open and control a window within a dylib?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

幽蝶幻影 2024-09-14 14:50:39

是的,问题是它不是一个捆绑包;它是一个捆绑包。你的笔尖不可能位于不存在的包中,那么代码如何找到它并打开它呢?

您需要使用一个框架(这是一个捆绑包),并在该框架中提供笔尖,或者您需要在 dylib 中以编程方式创建整个窗口。

Yes, the problem is that it's not a bundle; your nib can't possibly be inside a bundle that doesn't exist, so how would the code find it to open it?

You need to either use a framework (which is a bundle), and ship the nib in that framework, or you need to create the entire window programmatically in your dylib.

水溶 2024-09-14 14:50:39

当共享库级别不是很低并且特别涉及 GUI 时,在 Mac 上发布 dylib 并不是标准做法。您将其打包到一个框架中,这样它不仅可以在其中包含代码,而且可以将关联的资源(笔尖、图像、声音)集中在一个位置。

阅读此 Apple 文档了解最新情况以及如何准备。或者,查看 /System/Library/Frameworks/ 以了解 OS X 本身如何提供库。

It's not a standard practice to just ship dylib on Mac, when the shared library is not very low level and involves GUI in particular. You package it into a framework, so that it can not only have codes in it, but associated resources (nibs, images, sounds) in one place.

Read this Apple document to understand what's going on and how to prepare it. Or, take a look at /System/Library/Frameworks/ to see how the OS X itself provides libraries.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文