小编Shi*_*yin的帖子

自动将巨大的C++库包装到C中以便在Swift/Go中导入

假设我有一个巨大的C++库(有大量的依赖项,在GCC下完整构建需要大约3小时).我想在lib上构建,但不想在C++中这样做,而是在更高效的语言中.我怎么能实际桥接或包装extern lib包,以便我可以用另一种语言和程序访问它?

考虑的语言:

  • 迅速

我发现,两种语言都为C libs和代码提供了自动桥接或包装(我实际上并不知道包装/桥接之间的区别).所以,如果我有一些c代码,我可以将它放在同一个Swift或Go项目中,并可以在我的项目中使用它进行简单的导入.

但是,这在C++代码的两种语言中都不起作用.所以我用谷歌搜索了如何将C++库转换为C代码或生成自动包装器.我找到了以下内容:

  1. swig.org - C++库的自动包装器
  2. Comeau C++编译器 - 自动将C++传输到C代码
  3. LLVM - 应该能够接受任何输入并将其转换为LLVM能够的任何输出.

题:

  1. 如果使用自动包装或自动桥接,它是否甚至在可用/现实/可管理的领域中构建在Swift/Go等其他语言中如此庞大的lib之上?
  2. 列出的3个库/程序/框架中哪些最适合C++的过程 - > C(因为Swift和Go都提供C自动换行).
  3. 有没有比我到目前为止考虑的更好的选择?
  4. 是否更好地"坚持使用C++",因为使用任何其他工具来进行包装/桥接过程将是非常重要的工作,以平衡使用像Swift/Go这样更高效的语言的好处?

谢谢:)

免责声明:还有可能在C语言中手动包装C++库,但这对于如此庞大的lib来说需要付出无法忍受的大量工作.

go swift

9
推荐指数
1
解决办法
535
查看次数

如果发生错误,请继续PHP多查询

我已经问过一些关于在PHP的多查询中捕获错误的事情了,但没有人回答.现在我已经google了一点,并了解了更多的问题.

我有这个代码:

// Some starting variables
$test = new mysqli("localhost","root","","testdatabase");
$Query = array();
$Query[] = "SELECT 'wos' FROM items WHERE itemID = 3";
$Query[] = "SELECT 'wos' FROM items WHERE itemID";
$Query[] = "SELECT 'wos' FROM items WHERE itemID = 5";
$Query = implode(";",$Query);
$Errors = array();

// Execute multi query

if ($test->multi_query($Query)) {
  do {
    // fetch results
    $Result = $test->store_result();
    print_r($Result);
    if($test->errno === 0) {
          echo $Result->num_rows . "<br>";
    }
    else {
        $Errors[] = $test->error;
    }
    $Result->close();

    if …
Run Code Online (Sandbox Code Playgroud)

php error-handling multi-query

6
推荐指数
1
解决办法
1524
查看次数

标签 统计

error-handling ×1

go ×1

multi-query ×1

php ×1

swift ×1