2012-01-24 3 views
-2

Я пытаюсь создать файл 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 

Что мне делать? Обратите внимание, что я не хочу устанавливать какой-либо файл библиотеки, поэтому я помещаю файлы заголовков в одну и ту же папку.

+1

В заголовках содержатся только декларации этих функций. Вы должны связаться с библиотекой, которая содержит определения этих функций ('.a' или' .so' файл). – hmjd

+1

Ваш код, кажется, уже скомпилирован. Ошибка заключается в связывании, что означает, что вы не предоставляете реализацию pngwriter для компоновщика. Если вы настаиваете на том, чтобы не использовать библиотеку, вы, вероятно, должны, по крайней мере, скомпилировать исходный код pngwriter и связать с результирующими объектными файлами. –

+0

Помимо проблемы, с которой вы собираетесь компилировать, то, что вы, вероятно, ищете, известно как [статическая ссылка] (http://en.wikipedia.org/wiki/Static_library), которая включает весь скомпилированный код в один исполняемый файл. –

ответ

0

Если вы не хотите включать библиотеку в свою компиляцию, вам нужно будет включить все исходные файлы, которые входят в библиотеку.

Смежные вопросы