DLLを探しているだけの場合は、ここで開発マシンを探してみてください。
%PROGRAM_FILES%\Microsoft Visual Studio 9.0\VC\ce\dll
それはあなたに実際のライブラリを取得します。それらをOSイメージに含めるには、さまざまな方法があります。通常、それらをプラットフォームまたはプロジェクトのBIBファイルに追加します。
それでも、ファイル拡張子の問題は解決しないと思います。ファイルを作成していて、拡張子がないだけで表示される場合は、MFCが存在するかどうかとは関係ありません。コード、または拡張子がないと判断する方法と関係があります(エクスプローラーで「ファイル拡張子を隠す」がオンになっていますか?)その問題を解決するには、コードを確認する必要があります。
** 編集 **
WindowsCEはUnicodeに大きく偏っています。ほぼすべてのWin32APIはUnicodeバリアントのみを公開しているため、コードもUnicodeに傾く必要があります。つまり、API呼び出しで渡される文字列はUnicodeである必要があります。
第二に、それが文句を言うとき、あなたはコンパイラを無視するべきではありません。あなたがそこにいるキャストは、コンパイラの苦情によるものだと私は確信しています、そしてそれはただ間違っています。元のコードがこれであった場合(最初のパラメーターにキャストがないことに注意してください):
File.Open(cFileAddr, CFile::modeCreate | CFile::typeBinary |
CFile::modeWrite | CFile::shareDenyNone);
次に、コンパイラエラーが発生します。
error C2664: 'CFile::Open' : cannot convert parameter 1 from 'char [100]' to 'LPCTSTR'
これは、Windows CEでOpen
、幅の広い(Unicode)文字列を探しているためです。ANSI文字列があります。単純な直接キャストでは、ANSIからUnicodeに変換することはできません。はい、コンパイラは文句を言うのをやめますが、それは悪い振る舞いをします。にキャストすることもできますがint
、char[]
それがAPIで機能するという意味ではありません。
したがって、幅の広い文字列を使用するようにコードを変更すると、すべてが機能します。
CFile File;
CFileException ex;
wchar_t cFileAddr[100] = TEXT("My Device\\Label.txt");
if(!File.Open(cFileAddr, CFile::modeCreate | CFile::typeBinary |
CFile::modeWrite | CFile::shareDenyNone))
{
wchar_t error[1024];
ex.GetErrorMessage(error, 1024);
cout << "Error opening file: ";
cout << error;
return;
}
File.Write("ID Technologies", 15);
File.Close();
wchar_t
の使用、マクロを使用した初期化、および呼び出しTEXT
でのキャストの欠如に注意してください。Open
編集2
上記のコードにエラー処理を追加しましたが、実際には、ドキュメントとデバッグ方法を読むことを学ぶ必要があります。これは非常に基本的な使用シナリオであり、エラーを探す方法を知ることは重要です。