On 26/11/2017 12:42, Roger Mason wrote:
Hello,

Thierry Banel <tbanelwebmin@free.fr> writes:

On 25/11/2017 15:59, Roger Mason wrote:
This code compiles fine on command line but org-babel can't link it.

#+BEGIN_SRC C++ :flags "-std=c++11 -I/usr/local/include" :libs  "-L/usr/local/lib -lginac"
#include <iostream>
#include <ginac/ginac.h>
using namespace std;
using namespace GiNaC;

int main () {
     symbol a("a"), b("b"), x("x"), y("y");
     lst eqns, vars;
     eqns = a*x+b*y==3, x-y==b;
     vars = x, y;
     cout << lsolve(eqns, vars) << endl;
      // -> {x==(3+b^2)/(b+a),y==(3-b*a)/(b+a)

return 0;
}
#+END_SRC

The error buffer contains many lines like this:

/tmp//ccv5YYn1.o: In function `main':
C-src-1046xti.cpp:(.text+0x67): undefined reference to `GiNaC::symbol::symbol(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'

I get the correct result:

#+RESULTS:
| {x==(3+b^2)*(a+b)^(-1) | y==-(-3+a*b)*(a+b)^(-1)} |

I use Or mode version 9.1.1
I just upgraded to Org mode version 9.1.3 (release_9.1.3-185-g579fa1 @
/home/rmason/.emacs.d/org-git/lisp/) and I'm still getting the link
error.

Cheers,
Roger



You may try to mimic org-babel in a shell, and see what happens.

cd /tmp/babel-29466ws7
g++ -std=c++11 -I/usr/local/include  C-src-29466moy.cpp -L/usr/local/lib -lginac

(of course you need to change the random names like babel-29466ws7 by the actual ones as generated on your system).