首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C++调用C语言写成的动态链接库

    C++在语法上是兼容C的,但是这不代表使用C语言不做任何处理直接写成的动态链接库就可以被C++给调用。由于C++引入了函数重载的机制,而这个机制的实现是在编译器层面的。编译器在“生成”函数符号信息时,不能仅仅通过函数名,因为重载函数的函数名都是一样的,所以它还要根据函数参数,命名空间等信息来确定唯一的函数签名;而C语言没有函数重载机制,C语言编译器在处理的时候通过函数名就可以唯一确定一个函数。这就导致C语言和C++语言生成的函数签名是不同的,故不能不做任何处理直接调用。下面我们来看一下C和C++编译同样一段代码为动态链接库以后的,它们的函数符号信息有什么不一样。

    02

    Go WebAssembly 入门(一)

    有关WebAssembly的介绍可以参考 几张图让你看懂WebAssembly 简单来说WebAssembly就是将其他语言C/Go/Rust等语言编译成wasm可执行二进制文件,浏览器来执行wasm。wasm相比JS,拥有体积更小,执行更快,因为最终编译成二进制文件,所以一些安全策略代码也更适合wasm。 经过尝试C和Go分别编写WebAssembly,相较而言我认为Go无论从语言层面还是工具链,用起来都更加方便一些。 本文使用原生go build,生成的wasm文件大约在1.4M左右,在生产环境中这个体积是很大的,优化go的wasm体积可以使用tinygo来build,同样的代码使用tinygo构建之后约为22K,甚至比C语言构建wasm的体积还要小(C语言 build后约为44K,不同版本不同环境可能略有差异)。参考https://tinygo.org/

    02
    领券