
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Visual StudioでDjangoのプロジェクト配下のappを作成する方法 1 2022/05/01 03:47
- Windows 10 Windows Updateが動作しません 7 2022/08/12 16:26
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- Visual Basic(VBA) フレームワーク「4.8.1」で、[Sub Main]が動かない。助けて下さい 3 2022/11/14 15:40
- Windows 10 Visual StudioとVisual C++ Build Toolsについて 1 2023/04/16 03:42
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- Microsoft ASP C#からvbsを実行したい 5 2022/11/24 17:31
- C言語・C++・C# visual studioでフォームデザインを作成する時のVB.netとC#の違い 2 2023/06/22 03:04
- Windows 10 数年前からWindows10 の Update ができないです。なぜですか? 7 2022/11/09 06:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
コンパイルできません。
-
Excelのエラーで困ってます。
-
ビルド失敗 指定されたファイ...
-
デバッグ中のエラーのことで教...
-
エラーメッセージにつて
-
fortranでプログラムを実行する...
-
BITMAPが...
-
VC2010のビルドエラーを全部出...
-
実行時のlibxxx.soのオープンエ...
-
ACCESSのDate関数のエラー表示...
-
ホームページビルダーでアクセ...
-
部分的なメモリ解放
-
C言語 [fopenのエラーについて...
-
C2146を回避するにはどうしたら...
-
webページのエラー
-
Arduino SHT11温度・湿度センサ...
-
win32api構造体引数の型指定に...
-
include無しにclassが書けない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
ビルド失敗 指定されたファイ...
-
fortranでプログラムを実行する...
-
visual C++ でビルドの中止がで...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
HEWを使用しているのですが、こ...
-
コンパイルできません。
-
バッチからsqlplusの接続エラー...
-
Visual Studioのstrcpy_sについて
-
DLL関数を使ったプログラム
-
キーの自動入力
-
RightとLeft関数のライブ...
-
BC30002: 型 'ListItem' が定義...
-
LPCWSTRとchar
-
error C3867 関数呼び出しには...
-
デバッグ中のエラーのことで教...
-
sys/time.hのインクルードがで...
おすすめ情報