[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to call Octave/Matlab script from C++ in Ubuntu?
From: |
c. |
Subject: |
Re: How to call Octave/Matlab script from C++ in Ubuntu? |
Date: |
Thu, 10 Apr 2014 10:31:44 +0200 |
On 10 Apr 2014, at 08:36, Kai Torben Ohlhus <address@hidden> wrote:
> On Thu, Apr 10, 2014 at 4:36 AM, kaatish <address@hidden> wrote:
> Hi,
> I have a bunch of related Octave/Matlab files out of which one of them
> contains a function that I need to call and use that result in a C++ program
> that I am writing on Ubuntu. I have Octave installed on this system so I'll
> be using Octave specific solutions to this problem.
>
> I have installed the octave header file packages. I seem to get an error
> when writing this simple code.
>
> int main(int argc, const char *argv[])
> {
> octave_main(argc, (char**)argv, true);
> ColumnVector sz(2);
> sz(0) = 10;
> sz(1) = 12;
> octave_value_list functionArguments = octave_value(sz);
> do_octave_atexit();
> return 0;
> }
>
> The compilation command is
>
> g++ -L /usr/lib/octave/3.2.4 -I /usr/lib/octave-3.2.4 -loctinterp
> -loctave -loctave salone.cpp
>
> The error that I get is
>
> /usr/bin/ld: /usr/lib/octave-3.2.4/liboctinterp.so: undefined reference
> to symbol 'Array<std::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >::~Array()'
> /usr/bin/ld: note: 'Array<std::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >::~Array()' is defined in
> DSO /usr/lib/octave-3.2.4/liboctave.so so try adding it to the linker
> command line
> /usr/lib/octave-3.2.4/liboctave.so: could not read symbols: Invalid
> operation
> collect2: ld returned 1 exit status
>
> Could someone please explain how to solve this? I have seen some example but
> they are about making a standalone problem, which does not seem to be what I
> am looking for. I just have a complicated Octave script which I want to use
> with a C++ program.
>
> So, apart from solving this error, how do I do that? I could not find any
> documentation which was clear enough to help me do so.
>
> Thanks.
>
>
>
> --
> View this message in context:
> http://octave.1599824.n4.nabble.com/How-to-call-Octave-Matlab-script-from-C-in-Ubuntu-tp4663554.html
> Sent from the Octave - General mailing list archive at Nabble.com.
>
> _______________________________________________
> Help-octave mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/help-octave
>
> Hello,
>
> You seem to have an older Octave version. Instead of g++ you should compile
> your standalone-program with mkoctfile like described in [1]. Under Ubuntu it
> is available in the package liboctave-dev [2].
>
> HTH, Kai
>
> [1]
> https://www.gnu.org/software/octave/doc/interpreter/Standalone-Programs.html#Standalone-Programs
> [2] http://packages.ubuntu.com/quantal/liboctave-dev
In addition to Kai's suggestions, you can have a look at this example in the
Octave source tree:
http://hg.savannah.gnu.org/hgweb/octave/file/8c0646dd9e5a/examples/embedded.cc
HTH,
c.