GetPathAはIO::Pathのメンバではありません,とエラーが出ます.

解決


鈴木  2007-07-13 02:15:16  No: 65648

お世話になります.
開発環境はVC++.NET2003,FramWorkです.

一時ファイルを作成するため,TMPフォルダのパスを取得しようと,

   System::String* Path = System::IO::Path::GetTempPath();

と記述すると,

--------------------------------------------------------------------------
error C2039: 'GetTempPathA' : 'System::IO::Path' のメンバではありません。
error C2660: 'GetTempPathA' : 関数に 0 個の引数を指定できません。
--------------------------------------------------------------------------

とエラー文が返ってきてしまいます.
新規で作ったフレームワークでは問題なくコンパイルが通ったので,他の何かと干渉してるんだろうとは推測できるのですが……DLLをLIBなしでインポートしたり長文になってたり,何所が悪いのか探すのが難しい現状です.

こういうエラーが起こりうる例示など,何方か教えて頂けませんでしょうか.
宜しくお願いします.

(未解決状態でスレッドが止まっている過去2件の質問も,まだ解決に至っていないのでそちらの方も分る方,宜しくお願いします)


Blue  2007-07-13 03:16:03  No: 65649

多分これと同じかな。

[C++/CLI]windows.hをインクルードした状態で、System::IO::Directory::GetCurrentDirectoryメソッドを使うには 
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=651000&SiteID=7


Blue  2007-07-13 03:38:01  No: 65650

あ、
>VC++.NET2003
ですか。
リンク先の対処方(一番最後の方のやつ)ですが、2005用なのでやらないほうがいいでしょう。
(_M_CEEって#defineが2005で追加されたものなのかどうなのかがわからないので。)
MessageBox の宣言部分のヘッダを確認して、同じように直すならOKでしょうけど。

他の対処として。
GetTempPathをつかうルーチンをwindows.hをインクルードしないcppに記述するとか、
APIの::GetTempPathを直接呼ぶとかで対処できるでしょう。


鈴木  2007-07-13 04:10:50  No: 65651

Blue様,ありがとうございます.
原因はWindows.hだったようで,インクルードされてないファイルに移したら無事動かすことが出来ました.


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加