emscripten:如何解决UnboundTypeError

 Liberty_Ai2502871477 发布于 2023-02-13 10:38

我正在尝试使用emscripten构建一个使用std :: vector和std :: map的程序,并且编译成功.但是,当我在Web浏览器(firefox/chrome)上运行它时,会捕获UnboundTypeError.

[03:21:26.453] UnboundTypeError:由于未绑定类型,无法调用intArrayToVector:Pi

这是使用生成的javascript代码的c ++代码和HTML文件.

TEST.CPP:

#include 
#include 

using namespace emscripten;

std::vector intArrayToVector(int* input, int num){
    std::vector vec;
    for(int i=0; i("VectorInt");
    function("intArrayToVector", &intArrayToVector, allow_raw_pointer>());
}

的test.html:







javascript代码由以下命令生成:

$ em ++ --bind test.cpp -o test.js

我怎么解决这个问题?感谢您的任何帮助!

1 个回答
  • Embind不支持指向原始类型的指针. "Pi"表示"指向整数".

    如果您总是事先知道数组的大小,可以尝试将数组作为const引用传递.例如

    std::vector<int> intArrayToVector(const int (&input)[100])
    

    或者您可以为指针作弊并使用整数参数,reinterpret_cast并将其视为指针.例如

    std::vector<int> intArrayToVector(uintptr_t input, size_t len) {
        const int* ptr = reinterpret_cast<int*>(input);
        ....
    }
    

    或者您可以使用支持指向原始类型的指针的cwrapAPI.

    2023-02-13 10:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有