ATL COM wizardのもとではnamespace std はだめ? – プログラミング – Home

ATL COM wizardのもとでは...
 
通知
すべてクリア

[解決済] ATL COM wizardのもとではnamespace std はだめ?


kanokawa
 kanokawa
(@kanokawa)
ゲスト
結合: 18年前
投稿: 25
Topic starter  

お世話になります
環境は 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' : 存在しないか名前空間ではありません。

というエラーがでました

この場合どうすれば直るでしょうか
ご教授いただけるとありがたい


引用未解決
トピックタグ
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

>#include <string.h>
#include <string>

#include <cstring>
と間違えてませんか?


返信引用
kanokawa
 kanokawa
(@kanokawa)
ゲスト
結合: 18年前
投稿: 25
Topic starter  

ご指摘ありがとうございます

>#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ファイルのなかなので私がいじれるものではないようです


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

> -GX を指定してくださいとあるんですが
> includeファイルのなかなので私がいじれるものではないようです

... -GX はコンパイル・オプション ですよ?
コード(ヘッダ)を書き換えるには及びませんが。


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

VC6の頃はSTLでいろいろ警告が出た覚えがあります。
warning C4530については
http://support.microsoft.com/kb/154419/ja
のQ10でしょうか。


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

VC++6 は C++ 言語仕様が採択される前の処理系なので、言語仕様書に従っていない。
VC++6 の <cstring> は std 名前空間を導入しないので、やっても無駄。

究極的に何がしたいのかがわからないけど
・VC++6 で std を言語仕様書どおりに使いたい→無理 (VC++6 は一部だけ対応)
・VC++6 で std::string (std::basic_string) を使いたい→ #include <string>
・ほかの何か?

あと -GX はヘッダファイル中で指定するものではなくて
プロジェクトの設定で指定するものだ(例外処理を有効にする)


返信引用
kanokawa
 kanokawa
(@kanokawa)
ゲスト
結合: 18年前
投稿: 25
Topic starter  

>... -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さん
大変ありがとうございました


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました