お世話になります
環境は Win XP VC++6.0です
経過は
新規作成→ATL COM wizard選択 プロジェクト名は Testを入力→
そのあとはすべてデフォルトでスケルトンを作成しました
そのあと Test クラスを右クリックし
ATL オブジェクト新規作成しました
シンプルオブジェクトを指定、オブジェクト名はMasterObjectで
あとは デフォルトです
CMasterObjectを右クリックしメンバー関数を新規に追加
void sample(){・・・・・・}です
関数sample()があるファイルの#includeを指定するところで
#include <string.h>
using namespace std;
を追加してビルドしたら
error C2871: 'std' : 存在しないか名前空間ではありません。
というエラーがでました
この場合どうすれば直るでしょうか
ご教授いただけるとありがたい
>#include <string.h>
#include <string>
か
#include <cstring>
と間違えてませんか?
ご指摘ありがとうございます
>#include <string>
>か
>#include <cstring>
>と間違えてませんか?
#include <string>でも#include <cstring>でも
同じメッセージがでます
メッセージの内容は
c:\program files\microsoft visual studio\vc98\include\istream(547) :
warning C4530: C++ 例外処理を使っていますが、
アンワインド セマンティクスは有効にはなりません。-GX を指定してください。
と およびにたようなメッセージがあわせて6個でます
-GX を指定してください
とあるんですが
includeファイルのなかなので私がいじれるものではないようです
> -GX を指定してくださいとあるんですが
> includeファイルのなかなので私がいじれるものではないようです
... -GX はコンパイル・オプション ですよ?
コード(ヘッダ)を書き換えるには及びませんが。
VC6の頃はSTLでいろいろ警告が出た覚えがあります。
warning C4530については
http://support.microsoft.com/kb/154419/ja
のQ10でしょうか。
VC++6 は C++ 言語仕様が採択される前の処理系なので、言語仕様書に従っていない。
VC++6 の <cstring> は std 名前空間を導入しないので、やっても無駄。
究極的に何がしたいのかがわからないけど
・VC++6 で std を言語仕様書どおりに使いたい→無理 (VC++6 は一部だけ対応)
・VC++6 で std::string (std::basic_string) を使いたい→ #include <string>
・ほかの何か?
あと -GX はヘッダファイル中で指定するものではなくて
プロジェクトの設定で指定するものだ(例外処理を有効にする)
>... -GX はコンパイル・オプション ですよ?
>コード(ヘッダ)を書き換えるには及びませんが。
そうですね コマンドラインで使うオプションであることを知りました
> http://support.microsoft.com/kb/154419/ja
>のQ10でしょうか。
解決の決定打となりました
大変ありがとうございました
>究極的に何がしたいのかがわからないけど
IEにボタンを取り付け宣伝を除いた部分だけに
編集して提供するプログラムを作っています
ボタンはとりつけることができ押せばメッセージを
表示するのであとはプログラムの本体部分が残っています
ところが大量の文字列処理を必要とします
そこでstringをつかおうとしています
>・VC++6 で std を言語仕様書どおりに使いたい→無理 (VC++6 は一部だけ対応)
>・VC++6 で std::string (std::basic_string) を使いたい→ #include <string>
>・ほかの何か?
そうですか 6 なので stdの仕様はとっくに満たしているとばかり
思っていました
>あと -GX はヘッダファイル中で指定するものではなくて
>プロジェクトの設定で指定するものだ(例外処理を有効にする)
GXをコマンドオプションだと知ったときはどうやってIDEのなかに
実現するんだろうと思っていましたが
上記と同じくこれで解決できます
subaruさん επιστημηさん tetrapodさん
大変ありがとうございました