我计划在web应用程序中使用c++库,而web程序集似乎是一个很好的工具。我正在用emscripten来编译它。
我获得了这个开源c++库的源代码,并使用emmake和emmake 制作了它。
在这两个调用之后,我的/usr/local/<name of open source>/lib中有/usr/local/<name of open source>/lib库,/usr/local/<name of open source>/include中也有头文件。
我还有一个使用这个开源库的示例cpp代码。
问题是:如何为这个cpp文件创建html文件?这样的文件名为"test.cpp“,我尝试了这个命令,但是它导致了许多”未解决的符号“。
em++ -I/usr/local/<name of open source>/include -L/usr/local/<name of open source>/lib test.cpp -s WASM=1 -o final.html然后我打电话给emrun在我的本地运行一个web服务器,但是final.html并没有显示我期望它显示的内容。
你能帮帮我吗?
发布于 2017-01-23 15:13:25
警告(实际上是错误)显示您没有通过emscripten编译包含的库的cpp文件。除了文件test.cpp之外,您还需要将项目所需的每个文件提供给em++命令。有关此问题的更多信息,请阅读这里。
现在转到问题的另一部分,emscripten将只为您“公开”的那些C++函数创建一个JS函数。(显然,这些公开函数调用的函数也将被编译,rest将被删除)。
关于实现这一点的小教程可以找到这里。
一旦您的函数公开,您就可以从您自己的JS代码中调用它们(例如:将它们绑定到JS事件上)
发布于 2017-01-15 07:38:04
看起来您的库可能存在未满足的依赖项(未解决的符号)。emscripten构建是一个交叉构建,这意味着它不能使用您安装的系统库;相反,您必须使用emscripten编译器构建所有的依赖项。Emscripten有一种不幸的行为,即未解决的符号是警告(其他链接者认为这些都是错误),但是如果有它们,您的程序就不太可能工作。
发布于 2017-01-25 12:26:24
由于各种原因,Emscripten并不将未解决的符号视为编译错误。
在编译项目时,还需要链接生成的.a库。您使用的-I和-L选项指定要在何处查找与程序链接的库,但没有指定要链接的库。
您需要将选项-l<name of your library>添加到编译命令中,以指定要将库链接到程序中。
https://stackoverflow.com/questions/41626056
复制相似问题