2012-01-24 16 views
-2

"pngwriter"を使用してpngファイルを作成しようとしています。私は自分のOSとしてUbuntuを使用しています。私はこれらのファイルを/ home/ediamin/png/folderに入れました。 1.png.h、2.pngconf.h、3.pngwriter.h、4.test.cpp、5.zconf.h、6.zlib .hのpngwriterでC++プログラムをコンパイルする方法

私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

コンパイルにライブラリを含めたくない場合は、ライブラリに入るすべてのソースファイルを含める必要があります。

関連する問題