初めて投稿させて頂きます。
VC++では無いため不適切な投稿かもしれませんが、もしご存じの方がいらっしゃればと思い、投稿させて頂きました。
stlを利用してプログラムを書いています。
以下のように、hoge1.hの中で、適当な構造体をtypedefしてそのvectorコンテナを作り、それをhoge1.ccの中で使っています。
このとき、コンパイルではエラーが出ませんが、リンカ(g++ ver.3.3.2)でリンクしようとする際に、hoge1.ccの中で、定義したvectorコンテナを宣言する部分でエラーが出ます。内容は、
In function 'std__simple_alloc<struct1, std::__default_alloc_template<(bool)1,(int)0> >::deallocate(struct1*, unsigned)':
undefined reference to 'std::__default_alloc_template<(bool)1,(int)0>::deallocate(void*, unsigned)'
といったようなものです。
別のOS上で、古いバージョンのg++を私用し多彩にはエラーが出ません。
どの辺りが不味いのか、御教示頂ける方がいらっしゃいましたら幸いです。
どうぞ宜しくお願い致します。
hoge1.h
-----
typedef struct{
double A;
double B;
}struct1;
typedef std::vector<struct1> struct1_vector;
-----
hoge1.cc
-----
struct1_vector hogehoge;
環境に依存すると書いているのに、
肝心のエラーが出る環境が記載されてないのですが・・
返信を頂きありがとうございます。
情報が不足しておりました。
環境は、Linux上でkernel 2.4.27上でgcc 3.3.2に含まれるg++ 3.3.2を使用しております。他のSTLライブラリ等は私用していません。
正確なバージョンを忘れてしまいましたが、別のLinux環境で、g++の2.xxでコンパイル・リンクした際には問題ありませんでした。
OSまでWindowsではなく、VC++とかなり離れてしまっており、申し訳ありません。
struct struct1 {
double A;
double B;
};
typedef std::vector<struct1> struct1_vector;
これでもダメすか?
ツイート | ![]() |