gpt4 book ai didi

c++ - 使用 SWIG 为 perl 创建 C++ 接口(interface)?

转载 作者:太空宇宙 更新时间:2023-11-04 10:45:06 26 4
gpt4 key购买 nike

我正在尝试掌握 SWIG。现在,我无法为 perl 构建简单模块。这是我所做的:

例子.cpp:

#include <iostream>

void hello()
{
std::cout << "Hello, world!"<< std::endl;
}

例子.i:

%module example
%{
#include <iostream>
extern void hello();
%}

extern void hello();

应用程序:

#!/usr/bin/perl

use strict;
use warnings;

use example;

example::hello();

和我的compile.sh 脚本:

#!/bin/bash -ex

arch=`perl -e 'use Config; print $Config{archlib};'`

swig3.0 -c++ -perl5 example.i
g++ -fPIC -c example.cpp
g++ -fPIC -c example_wrap.cxx -I$arch/CORE -L$arch/CORE
g++ -shared example_wrap.o -o example.so

编译良好 - 未显示任何错误。但是,当我运行 app.pl 时,出现以下错误:

/usr/bin/perl: 符号查找错误:./example.so: undefined symbol: _Z5hellov

我试着谷歌了一下,但无济于事。到目前为止,一切都失败了。我做错了什么?

我正在使用具有 3.13 内核和 perl 5.18.2 的 Linux Ubuntu x86_64

最佳答案

看看小突破的力量。

原因很简单:我没有将 example.o 添加到编译链 - 所以确实没有 hello() 函数的定义!

为了解决这个问题,我将 compile.sh 的最后一行更改为:g++ -shared example.o example_wrap.o -o example.so

我觉得自己很蠢。

关于c++ - 使用 SWIG 为 perl 创建 C++ 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33434731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com