-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
よ、このコードが含まれています
どうすればよいですか?私はライブラリファイルをインストールしたくないので、ヘッダファイルを同じフォルダに置く理由です。
ヘッダーには、これらの関数の宣言のみが含まれています。これらの関数の定義を含むライブラリ( '.a'または' .so'ファイル)にリンクする必要があります。 – hmjd
コードが既にコンパイルされているようです。リンクに失敗しました。つまり、あなたはリンガーにpngwriterの実装を提供していません。ライブラリを使用しないと主張するならば、少なくとも(おそらく)pngwriterのソースコードをコンパイルし、その結果のオブジェクトファイルにリンクする必要があります。 –
コンパイルしている問題とは別に、あなたが探しているものは[静的リンク](http://en.wikipedia.org/wiki/Static_library)として知られており、コンパイルされたコードはすべて単一の実行可能ファイルに含まれています。 –