画像のピクセルデータを含むBYTE配列を作成しました。画像はグレースケールで、各ピクセル強度は32ビット整数です。ここで、各ピクセル強度(32ビット整数)を読み取り、各ピクセル強度に対していくつかの操作を実行して、変更されたピクセル強度を(再び32ビット整数で)保存します。だから私の質問は、BYTE配列から32ビット(または16ビット)の整数をどのように読み取ることができるかということです。(VC ++ / MFCで動作します)。
ありがとうございました。
画像のピクセルデータを含むBYTE配列を作成しました。画像はグレースケールで、各ピクセル強度は32ビット整数です。ここで、各ピクセル強度(32ビット整数)を読み取り、各ピクセル強度に対していくつかの操作を実行して、変更されたピクセル強度を(再び32ビット整数で)保存します。だから私の質問は、BYTE配列から32ビット(または16ビット)の整数をどのように読み取ることができるかということです。(VC ++ / MFCで動作します)。
ありがとうございました。
の配列から(または) の配列memcpy
にデータを取得するために使用します。BYTE
int32_t
uint32_t
移植性が必要ない場合、アーキテクチャではおそらく最初のアドレスBYTE
を aにキャストし、int32_t*
それをその場で使用できます。
すべてのデータが常にファイルから取得され、個々のバイトで何も処理する必要がない場合は、int32_t
.
ベン・ボイト
当然のことながら、私は DLLMain が必須ではないという声明に完全に同意しません。あなたが提供したリンクには、誤解を招く情報が含まれています。
すべての実行可能モジュール (exe または DLL)には ENTRY POINT が必要です。そうしないと、システムはどのプログラムも開始できません。
したがって、エントリ ポイントの定義と実装は必須です。
アンク
Win32 または MFC 拡張 dll を作成すると、ウィザードは両方のプロジェクトにエントリ ポイントを挿入します。MFC は DllMain を使用し、Win32 は _tmain を使用します。これは、Unicode の wmain または ANSI の main として定義されています。どちらも名前のプレースホルダーにすぎず、変更できます (しかし、わざわざする必要はありません)。
MFC 通常の DLLを作成しておく必要があります。このタイプの dll にもエントリ ポイントがありますが、ウィザードによって作成されたソース ファイルには公開されません。これは __DllMainCRTStartup と呼ばれ、crtdll.c にあります。
MFC の通常の DLL の場合、アプリの InitInstance を使用して dll を初期化します。
ちなみに、どの MFC アプリケーションにも WinMain があり、ウィザードによって生成されたコードには公開されていません。