2017-04-02 22 views
-3

私は特定のトピック(例:文字列の操作、数学、時間など)に関する多数のファイルを含むミニ個人用ライブラリを作成しました。 。これは、より良い用語の欠如のために、メインのコンテナファイルは次のようになります。stringは特定のファイルのstdのメンバーではありません

#include <iostream> 
#include <fstream> 
#include <conio.h> //_getch() ("Pauses" the program) 
#include <stdlib.h> //atoi (Converts string to integer) 
#include <io.h> 
#include <stdio.h> 
#include <vector> 
#include <string> //I have also tried including cstring and string.h, but that didn't help 
#include <sstream> 
#include <windows.h> 
#include <ctime> 
#include <math.h> 
#include <cmath> 
#include <algorithm> 

#include "SDL2/SDL.h" 
#include "SDL2/SDL_ttf.h" 

#include "numbers.cpp" 
#include "strings.cpp" 
#include "time.cpp" 
#include "SDL.cpp" 
#include "console.cpp" 
#include "files.cpp" 

場合誰の言うことができないのでは、私が作ったすべてのファイルはnumbers.cppを含め、以下のすべてのものとです。残りの部分は、C++ライブラリまたは途中の2つのSDLファイルです。

std :: stringは、console.cppまでのすべてのファイルで動作します。 std :: stringは引数であれ、関数宣言の変数であれ、 'string is std'のメンバーではありません。 ビルドターゲットとプロジェクトからconsole.cppを除外すると、std :: stringを使用しようとするたびにfiles.cppに同じエラーが発生します。しかし、たとえば、SDL.cppをconsole.cppの後でfiles.cppの前に置くと、std :: stringsが正常に動作します。ファイルの

なしのみまた、私は私が次のものがないことが重要であるかもしれないと思う任意のインクルードファイルに

を持っていないいくつかのヘッダファイルが含まれてSDL.cpp、除いてそれらのいずれかのの#includeを持っていません私のコンパイラ、リンカオプションで:

-lmingw32 -lSDL2main -lSDL2 -lSDL2_ttf 

私はまた、SDL2に検索ディレクトリはフォルダが含まれていますが、私はそれが問題であるとは思いません。 ビルドの種類は静的ライブラリです(問題があるかもしれませんが、GUIアプリケーション、ダイナミックライブラリまたはネイティブとしてビルドする場合も同じ問題があります。コードブロックIDEを使用しています。

私はすでに他の同様の質問で解決策を探しましたが、文字列を含めたり、間違った場所に置いたりするのを忘れてしまっていました...あらかじめご協力いただきありがとうございます。重要な情報を除外した場合

+6

なぜ '.cpp'ファイルを含めるのですか? – ForceBru

+0

クローズされていないcppファイル(time.cpp?)に名前空間がありますか? – 1201ProgramAlarm

+1

[なぜ私はcppファイルを含まず、代わりにヘッダを使うべきですか?](http://stackoverflow.com/questions/1686204/why-should-i-not-include-cpp-files-and-instead-use-a -header)cppファイルをコンパイルしてリンクすることで、問題を解決したり、より良いエラーメッセージを表示したりすることができますが、それ以外の質問は現在の状態では答えられません。インクルードを修正し、編集や詳細情報を返す。 – user4581301

答えて

0

解決済み - 問題は、.cppファイルが含まれていたためです。それらをヘッダファイルに変更することで、動作させることができました。

関連する問題