- 【GPGPU】くだすれCUDAスレ part7【NVIDIA】 [転載禁止]©2ch.net
132 :125[sage]:2015/05/21(木) 17:23:47.43 ID:25nDpRt2 - レスありがとうございます
どうやら>>127のエラーはCUDAとは関係なさそうなのでC++のスレで聞いてきます
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
703 :デフォルトの名無しさん[sage]:2015/05/21(木) 17:39:47.55 ID:25nDpRt2 - ソースファイルを分割してみたのですがエラーが出てしまうので解決方法を教えてもらえませんか?
//main.cu #include "test.h" //....変数や関数の定義 int main(){ .... } //sub.cu //原因特定のため、空ファイル //test.h #ifndef _TEST_H_ #define _TEST_H_ #include <stdlib.h> ...... #include "MT.h" ......//変数や関数の宣言 #endif これをビルドすると以下のようなエラーがいくつか出ます 1>sub.cu.obj : error LNK2005: "long __cdecl genrand_int31(void)" (?genrand_int31@@YAJXZ) は既に main.cu.obj で定義されています。 これらはすべてヘッダファイルでインクルードしたMT.hの関数についてのエラーなのですが、MT.hのどこがいけないのでしょうか? MT.h: http://www.sat.t.u-tokyo.ac.jp/~omi/code/MT.h
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
707 :デフォルトの名無しさん[sage]:2015/05/21(木) 19:43:06.01 ID:25nDpRt2 - >>704
改名してみましたが変化なしでした >>705 それからmain()部分を削除してヘッダファイルにしたものが>>703なので、内容は同じです >>706 ヘッダファイルに問題がないとすれば、そうなりますよね もう一度重複定義を引き起こす原因を探してみます ちなみにソースファイルを分割する前は>>703のコードで正常に動作していました
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
711 :デフォルトの名無しさん[sage]:2015/05/21(木) 21:25:38.45 ID:25nDpRt2 - >>708->>710
レスおりごとうございます >>709のおっしゃる通りMT.cをインクルードしてました ヘッダにMT.cの宣言を書くと成功しました! ところでどうしてMT.hではダメだったのでしょうか?
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
713 :デフォルトの名無しさん[sage]:2015/05/21(木) 21:47:23.79 ID:25nDpRt2 - >>712
正常に動作しないのは>>703の状態です、正常に動作していたのは全てのコードをmain.cに書いていた時です。 ソースコードを分割したときに、新しく作ったtest.hでMT.hをインクルードしたのですが、 エラーから見るに何故かMT.hが複数回定義されているようなんです
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
716 :デフォルトの名無しさん[sage]:2015/05/21(木) 22:39:18.89 ID:25nDpRt2 - >>714
すみません、それは訳あって出来ないんです >>715 そういうことですか、test.hにインクルードガードつけてるから大丈夫かなと勝手に思ってました ありがとうございました
|