卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章65964本站已运行421

共享库(动态链接)-这与库无关

共享库(动态链接)-这与库无关

这是我在这里发表的第一篇文章,所以,我们走吧。

免责声明:我不会对我的帖子产生期望。我分享的一切都是我学习过程的一部分,这通常涉及向他人解释事情。我发现这个方法在42学校期间特别有效。因此,我将发布有关我当前正在学习或已经学习的各种主题。

为什么发这个帖子?

实际上,我正在为一个职位空缺做挑战,我正在努力解决共享对象,而且我是在家里做的,所以我记得谁很难在你身边没有另一个人来问问题,即使他们不知道答案,他们帮助你思考并找到新的方法,或者他们有新的想法,甚至更好,他们帮助你有新的想法等等。


第一步

此挑战涉及使用我选择的任何编程语言创建共享库。
该库将使用用 C 编写的专门制作的二进制文件进行测试。我的目标是根据提供的测试输出确保库功能按预期运行。


正在努力

在最近的一次采访中,我面临一个挑战:创建一个充当 CSV 处理器 的共享库。最初,我选择用 Go 来开发它。这似乎是一个简单的任务......

虽然编写 Go 代码本身不是问题,但真正的挑战出现在将库与 C 二进制文件集成时。每次尝试都会导致不同的错误,通常与生成的共享对象(.so文件).

中缺少符号有关

幸运的是,我最终找到了一个解决方案,并且能够使用提供的二进制文件测试该库。然而,运行该程序会导致核心转储,表明出现意外行为。

为了解决这个问题,我选择切换到C++。主要原因是用 C++ 创建的共享对象与 C 二进制文件之间的接口很容易。这种方法最大限度地减少了调试难度并消除了核心转储。


最后的想法

尽管遇到了最初的障碍,我仍在解决 C++ 中的 CSV 处理器挑战。更好地理解共享对象和动态链接(感谢我之前使用静态库的经验)绝对有帮助。然而,我遇到的最初问题花了很长时间才解决。

赛亚!

一些学习静态和动态的参考资料

减少编译时间
低级学习视频我喜欢这个频道
介绍与创作
C 编程

卓越飞翔博客
上一篇: Golang框架如何与C++集成?
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏