- PR -

テンポラリファイルの作成

1
投稿者投稿内容
hiro-ta
ベテラン
会議室デビュー日: 2003/09/03
投稿数: 79
投稿日時: 2003-10-29 21:38
お世話になっております。
.NETでテンポラリファイルを作成する関数を探しているのですが、見つかりません。
そのような関数は存在しますか?
dai
ベテラン
会議室デビュー日: 2001/08/28
投稿数: 85
投稿日時: 2003-10-29 21:51
Path.GetTempFileName ですね。
hiro-ta
ベテラン
会議室デビュー日: 2003/09/03
投稿数: 79
投稿日時: 2003-10-30 10:26
daiさん、ありがとうございます。
早速試してみたのですが(C++)

String *xmlTmp = System::IO:ath::GetTempFileName();
とすると

System::IO:athのメンバではありません。
とエラーが出ます。
.NET Framework1.0だからでしょうか?
しかし1.0に対応したものを作成する必要があり、困っています。
何か方法はないでしょうか?
dai
ベテラン
会議室デビュー日: 2001/08/28
投稿数: 85
投稿日時: 2003-10-30 11:09
Managed VC++ でしょうか?
あまり詳しくないのですが、Mscorlib.dll の参照設定はありますよね?

MSDNを見る限り、.NET Framework 1.0 にも Path.GetTempFileName はあるようです。
hiro-ta
ベテラン
会議室デビュー日: 2003/09/03
投稿数: 79
投稿日時: 2003-10-30 12:22
Managed C++でMscorlib.dllは参照しています。

エラーをよく見ると
error C2039: 'GetTempFileNameA' : 'System::IO:ath' のメンバではありません。
error C2660: 'GetTempFileNameA' : 関数に 0 個のパラメータを指定できません。

というメッセージで、どうやらコンパイラがWin32APIのGetTempFileName()と誤解している
ようです。
しかし何故そうなるのか、どうすればいいのか、が分かりません。
オプションのVC++ディレクトリでFrameworkSDKのインクルード検索順序を一番高くする
ということはやってみましたがダメでした。

また、新規でC++マネージ拡張のプロジェクトを作成してGetTempFileNameを使ってみたところ
ビルドできましたので、元のプロジェクトの設定かソースにどこか問題があるのだと思い
ますが、今のところ何が悪いのか分かりません。
何か情報をお持ちの方いらっしゃらないでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-10-30 13:40
引用:

hiro-taさんの書き込み (2003-10-30 12:22) より:

エラーをよく見ると
error C2039: 'GetTempFileNameA' : 'System::IO::Path' のメンバではありません。
error C2660: 'GetTempFileNameA' : 関数に 0 個のパラメータを指定できません。

というメッセージで、どうやらコンパイラがWin32APIのGetTempFileName()と誤解しているようです。


 Ascii用のGetTempFileNameAと、Unicode用のGetTempFileNameWがあって、単にGetTempFileNameとすると、どちらを使用するか判断して切り替えてくれるそうです。しかし、だからといってGetTempFileNameWとしても、おそらくリンクエラーになります^^;。


 インクルードファイルの中で使うと、正しくWをリンクしてくれるのですが、なぜそうなのかは謎・・・
#某Q&Aサイトで質問があがっている内容より
1

スキルアップ/キャリアアップ(JOB@IT)