Текст Gnuplot epslatex отсутствует [дубликат]

Порядок, в котором указаны взаимозависимые связанные библиотеки, неверен.

Порядок, в котором связаны библиотеки, имеет значение, если библиотеки зависят друг от друга. В общем случае, если библиотека A зависит от библиотеки B, тогда libA ДОЛЖЕН появляться перед libB в флагах компоновщика.

Например:

// B.h
#ifndef B_H
#define B_H

struct B {
    B(int);
    int x;
};

#endif

// B.cpp
#include "B.h"
B::B(int xx) : x(xx) {}

// A.h
#include "B.h"

struct A {
    A(int x);
    B b;
};

// A.cpp
#include "A.h"

A::A(int x) : b(x) {}

// main.cpp
#include "A.h"

int main() {
    A a(5);
    return 0;
};

Создайте библиотеки:

$ g++ -c A.cpp
$ g++ -c B.cpp
$ ar rvs libA.a A.o 
ar: creating libA.a
a - A.o
$ ar rvs libB.a B.o 
ar: creating libB.a
a - B.o

Скомпилируйте:

$ g++ main.cpp -L. -lB -lA
./libA.a(A.o): In function `A::A(int)':
A.cpp:(.text+0x1c): undefined reference to `B::B(int)'
collect2: error: ld returned 1 exit status
$ g++ main.cpp -L. -lA -lB
$ ./a.out

Чтобы повторить снова, порядок имеет значение!

2
задан user2820579 3 December 2013 в 05:25
поделиться

1 ответ

Вероятно, вы просматриваете файл sample1-inc.eps. Но сначала вы должны скомпилировать выходной файл LaTeX. Для этого очень удобно использовать опцию standalone и компилировать из самого скрипта:

set terminal epslatex 8 standalone
set output 'sample1.tex'
set size 0.75,0.75
set xrange [-pi:pi]
set yrange [0:1.2]
set xlabel "$x$"
set ylabel "$y$"
plot sin(x)*sin(x) title "$\\sin^2(x)$"

set output # finish the current output file
system('latex sample1.tex && dvips sample1.dvi && ps2pdf sample1.ps')

Теперь вы можете load 'sample1.gpi' и просмотреть полный вывод как sample1.ps или sample1.pdf , Если вы находитесь в Windows, вам может понадобиться скомпилировать три отдельных вызова system (только гадание):

system('latex sample1.tex')
system('dvips sample1.dvi')
system('ps2pdf sample1.ps')
4
ответ дан Christoph 26 August 2018 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: