- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
首先我会展示我的问题,然后我会提供更多背景细节:
我在Windows平台上的一个Visual C++项目中工作(但同时我们需要保证我们的源代码的跨平台能力< strong>支持 Linux)。
我的一位同事被要求设计和实现一些可以由其他项目共享的独立 DLL 模块。他计划开发两个具有不同目的的 DLL:
他对这种设计的考虑包括:
事实上,通过一些真实的测试,我们发现这些全局对象无法按预期构建,遗憾的是,这让他心碎了 ;-)。但我认为他的设计看起来仍然不错,所以我们想找出一些方法让它发挥作用。我们更愿意以这种方式使用这些 DLL:DLL 使用 libs 和 include 部署在开发人员的计算机中。然后在具体的 VC++ 项目中,它们在链接时合并。现在我们没有编译或链接错误,只是 DLL #2 中的这些全局对象没有按要求创建。
最佳答案
你不能使用 DLL 的 DllMain()
功能来初始化一切?只需检查 DLL_PROCESS_ATTACH
,它会让您知道 DLL 是否正在加载。同样,您可以使用 DLL_PROCESS_DETACH
执行任何清理工作。
如果您对 Linux 保持开放,您还可以使用 GCC 的 __attribute__((constructor))
.
关于您的问题:
main()
函数之前创建它们。如果你能保证它们是在 DllMain()
中创建的,它将在 DLL 中的任何其他函数之前被调用(并且用户不调用它;操作系统调用它),你是否真的需要它在 main()
之前吗?我会很惊讶。关于c++ - 如何在宿主程序调用 main() 函数之前构造 DLL 模块中的全局对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13550769/
我正在开发框架,我已将此框架项目添加到宿主项目中。现在我想将 cocoapods pod(框架)添加到父(主机)项目中。并将同一个 pod 共享到子(框架)项目中。或者有什么我可以添加到 Podfil
我正在尝试使用 vagrant , Clojure和 emacs一起。具体来说,我无法连接cider到我的 vagrant机器。 它在本地工作,当我运行时 cider-jack-in在我的项目里面。
我是一名优秀的程序员,十分优秀!