但是,似乎一般语言不链接到C,并且由于各种原因只能通过C访问C.
因此,出于好奇,
哪些语言可以链接到C以及如何以及在何种程度上链接?
(除非以优雅或有趣的方式完成,例如Boost.Python,否则上述C桥没有功劳)
解决方法 注意:ABI包括名称修改以及调用约定,环境要求等.EABI(此处未涉及)是特定于平台的,但通常针对每个平台进行标准化(虽然这不能保证)并且不会受到影响可变EABI的问题(因为它没有太大变化).有关此主题的更多信息,请咨询 ABI on Wikipedia.由于ABI未定义,因此不太可能链接到C.因此,符号的名称可以根据编译器供应商的意愿而改变.例如,GCC与MS的编译器不同.即使使用相同的编译器,ABI在版本之间也可能不同(与某些GCC版本的情况一样).
但是,链接到C并非不可能. C程序链接到其他C程序是很常见的,因为它们都是由相同的编译器(或至少使用相同ABI的编译器)编译的.如果ABI已知,则非C应用程序可以链接到C语言.
链接到C很容易.这是因为对于大多数平台而言,C的ABI比C的ABI更稳定.这是因为与C相比,C的简单性.因为C可以导出C符号,绕过C的ABI问题,所以有时会看到C库导出C符号,这些符号允许与底层C对象进行交互,而不会出现名称错位,链接兼容性和面向未来的问题.但是,这样做可以防止您通过C接口与C接口轻松使用C库.
但是您可以使用C导出来使用C接口.该库可以在头文件中提供一些类,为您包装C导出.这是对图书馆作者的更多工作(并且可能会导致一些问题,因为DRY通常不会使用这种技术),但为图书馆用户提供了很多好处(可以在两个界面之间进行选择而不必担心链接问题!).对于其他语言,库编写者可以提供类似C头文件的接口,这些文件处理C导出本身. (然后,您可以使用本机类等.)
总结以上是内存溢出为你收集整理的在可以链接到c的语言上全部内容,希望文章能够帮你解决在可以链接到c的语言上所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)