atlstr.hのインクルードにより生じるエラーについて質問させて頂きます。
開発環境は、Visual Studio 2008 Professional Editionです。
(Visual Studio 2008におけるプログラミングは正直まだ慣れておりませんorz)
Visual Studio 2008製品内のVisual C++ 2008において、以下の操作を行いプログラムを
実行すると、コンパイルは通るのですが、プログラム実行後にエラー音が一度鳴るだけ
でフォームが表示されないというエラーが発生します。その際、タスクマネージャでプロセ
スを確認するとプログラム自体は動いているようで、”AtlStrTest.exe”というプロセスが実
行されているのが確認できます。
1.[ファイル]->[新規作成]->[プロジェクト]で新しいプロジェクトダイアログを表示させる
2.[Visual C++]->[CLR]->[Windows フォーム アプリケーション]を選択し、プロジェクト名
”AtlStrTest”でプロジェクトを新規作成
3.プロジェクト内に生成された”atdafx.h”の”// TODO: プログラムに必要な追加ヘッダー
をここで参照してください。”というコメントの下に#include <atlstr.h>の一行を追加する
原因を分析しようにも、ヘッダをインクルードしただけでエラーが起きるという状況がは
じめてなので、途方に暮れている状態です。
大変恐縮ですが、このatlstr.hのインクルードによるエラーがなぜ発生したのかについて、
どなたかアドバイスよろしくお願いいたします。
【関連情報】
同様の操作を、Win32コンソールアプリケーションで実行したときは、このようなエラーは
出ませんでした
No.4ベストアンサー
- 回答日時:
これまでに書かれた内容から、多分同じであろうというプロジェクトを作って見ました。
結果は、
Debugでは
VS上でデバッグ開始/デバッグなしで開始/exeで実行のいずれでもエラーメッセージ(Debug Assertion Faild! この下のメッセージは内容が判りませんでした。存在しないディレクトリのdbgheap.cを示していましたので)を出して、中止を選んでもプロセスが残ったままでした。すべて中止にすればプロセスも終了しました。
Releaseでは
デバッグ開始でハンドルされていない例外のエラー、デバッグなしで開始/exeで実行のいずれでもForm1が表示されました。
右上の閉じるボタンで終了しました。
Visual Studio 2008 Professional Version 9.0.30729.1 SP です。
結果だけで、原因と解決法はわかりません。
ご回答ありがとうございます!
samtomsan様のおっしゃる通り、Releaseモードではatlstr.hをインクルードし、CStringクラスを使用することができました!これで、やっと作成したプログラムを動かすことができます。本当にありがとうございます。
ただ、Debugにおいてエラーが発生する原因が不明なので、今後開発するプログラムではbluecampus様のアドバイスに従い、System::StringやEncodingを使用して行こうと思います。
Wr5様、redfox63様、bluecampus様、samtomsan様、この度は質問へのご回答に貴重なお時間を割いていただき頂き、誠にありがとうございました!!
No.3
- 回答日時:
CStrinTを使う目的のみでのincludeだったら辞めて
System::Stringクラスを使うと、const char* 型(Shift_JIS文字コード配列)、const wchar_t*(Unicode文字コード配列)と変換できるので、
System::StringをShift_JISに変換するところだけ、Encodingクラス(PtrToStringCharsとかMarshalクラスとかでも)で行うとか。
全部Encodingクラスでもいいですけど。
ご回答ありがとうございます。
System::StringクラスとEncodingクラスを用いても、Shift_JIS文字コード配列とUnicode文字コード配列と間の変換が可能ということですので、今後はそれらのクラスを活用したいと思います!
ただ、現状といたしましては、すでにWin32コンソールアプリケーションプロジェクト下でCStirngを使用したプログラムの部品となるクラスを多数作成してしまっています。そのため、なるべくなら現在作っているプログラムまでは、CStringを使いたいというのが正直なところです…。
No.2
- 回答日時:
atlstr.hをインクリュードして何を使いたかったのでしょう?
.NET側で用意されているもので代用が出来るかもしれないですよ
インクリュードしただけですが 関数のプロトタイプ宣言が仕様に反していればエラーになるのではと思います
ご回答ありがとうございます。
atlstr.hは、CStringを使用するためにインクルードしておりました。
CStringを使用したい理由としては、ワイド文字とマルチバイト文字の変換が、MultiByteToWideCharや
WideCharToMultiByteと比べ簡単に行えるためです。
あと、関数のプロトタイプ宣言が仕様に反している場合のエラーですが、この場合エラーの内容はコマ
ンドラインに表示されないのでしょうか?
No.1
- 回答日時:
手元のはVS2005Stdですが…
1>C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\atlconv.h(90) : error C3641: 'InterlockedExchangePointer' : /clr:pure または /clr:safe と共にコンパイルされた関数に対する呼び出し規約 '__stdcall ' が無効です
って感じのエラーがいくつか出ています。
CLRではそういう使い方はできない…のでしょう。
# エラーメッセージ見る限りでは呼び出し規約が違う…ということっぽいですけど。
この回答への補足
ご回答ありがとうございます。
申し訳ありません、操作のステップを一つ忘れていました。
実際には、上記の3つのステップに加え、[プロジェクトのプロパティ]->[構成のプロパティ]->[全般]->[共通言語のランタイムサポート]において、[共通言語のランタイムサポート(/clr)]を選択する必要がありました。この処理を行わないと、私の環境においても、呼び出し規約が違うというエラーメッセージが表示されておりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
fortranでプログラムを実行する...
-
エクセルのエラーメッセージ「4...
-
VB2008で定数に色の設定をした...
-
VBAでファイルを開くプログラム...
-
CBuilder ver6使用時にエラー
-
IOCTL_CDROM_RAW_RAEDで生デー...
-
教えてください
-
エラー 'iostream.h' : No su...
-
Excelのエラーで困ってます。
-
VB6 実行時エラー -2(fffffffe)
-
VC++の自動キー入力プログラム
-
バッチからsqlplusの接続エラー...
-
C2146を回避するにはどうしたら...
-
Cygwin64のtermio(s).hについて
-
multiple definitionというエラー
-
SQLServerについて
-
LPCWSTRとchar
-
MQL5にて謎のエラーが発生!だ...
-
ビルド時にinet_ptonが見つから...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
fortranでプログラムを実行する...
-
バッチからsqlplusの接続エラー...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
HEWを使用しているのですが、こ...
-
sys/time.hのインクルードがで...
-
BC30002: 型 'ListItem' が定義...
-
Handlesについて
-
Visual Studioのstrcpy_sについて
-
RightとLeft関数のライブ...
-
error C3867 関数呼び出しには...
-
デバッグ中のエラーのことで教...
-
コンパイルできません。
-
multiple definitionというエラー
-
ビルド失敗 指定されたファイ...
-
レコードセットをcloseする所で...
-
左側がクラス、構造体、共用体...
おすすめ情報