Я пытаюсь создать файл png с помощью "pngwriter". Я использую Ubuntu как свою ОС. Я поместил эти следующие файлы в/home/ediamin/png/folder 1.png.h, 2.pngconf.h, 3.pngwriter.h, 4.test.cpp, 5.zconf.h, 6.zlib .hКак скомпилировать программу C++ с помощью pngwriter
мой test.cpp содержит эти Коды
#include<iostream>
#include "pngwriter.h"
using namespace std;
int main() {
int i;
int y;
pngwriter png(300,300,0,"test.png");
for(i = 1; i < 300;i++) {
y = 150+100*sin((double)i*9/300.0);
png.plot(i,y, 0.0, 0.0, 1.0);
}
png.close();
return 0;
}
Теперь я пытаюсь скомпилировать с этой командой,
g++ -o test test.cpp -DNO_FREETYPE
и это дает мне следующие ошибки,
/tmp/ccLr9Szo.o: In function `main':
test.cpp:(.text+0x30): undefined reference to `pngwriter::pngwriter(int, int, double, char const*)'
test.cpp:(.text+0x72): undefined reference to `pngwriter::filledcircle(int, int, int, double, double, double)'
test.cpp:(.text+0x7e): undefined reference to `pngwriter::close()'
test.cpp:(.text+0x8f): undefined reference to `pngwriter::~pngwriter()'
test.cpp:(.text+0xa4): undefined reference to `pngwriter::~pngwriter()'
collect2: ld returned 1 exit status
Что мне делать? Обратите внимание, что я не хочу устанавливать какой-либо файл библиотеки, поэтому я помещаю файлы заголовков в одну и ту же папку.
В заголовках содержатся только декларации этих функций. Вы должны связаться с библиотекой, которая содержит определения этих функций ('.a' или' .so' файл). – hmjd
Ваш код, кажется, уже скомпилирован. Ошибка заключается в связывании, что означает, что вы не предоставляете реализацию pngwriter для компоновщика. Если вы настаиваете на том, чтобы не использовать библиотеку, вы, вероятно, должны, по крайней мере, скомпилировать исходный код pngwriter и связать с результирующими объектными файлами. –
Помимо проблемы, с которой вы собираетесь компилировать, то, что вы, вероятно, ищете, известно как [статическая ссылка] (http://en.wikipedia.org/wiki/Static_library), которая включает весь скомпилированный код в один исполняемый файл. –