掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DLLでBmpのサイズとピクセル列を引き渡すには? (ID:8680)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ありがとうございます。 上記のソースを追加して以下のソースに変更しましたがハンドルエラーが出ます。 今度は、DLLの中に問題があるようです。 <変更したソース> #include<windows.h> #include <stdio.h> #include <malloc.h> #include <string.h> // 関数のプロトタイプをtypedefを使って定義します。 #ifdef __cplusplus extern "C" { #endif typedef int (WINAPI *pload)(char*, char*); #ifdef __cplusplus } #endif char* filename; int jpeg2bmp(char *OpenName,char *SaveName); int main(int argc,char *argv[]) { jpeg2bmp("C:\\tfijpeg1.jpg", "C:\tifbmp1.bmp"); return 0; } int jpeg2bmp(char *OpenName,char *SaveName) { filename = OpenName; // 関数ポインタを定義 pload pl; HINSTANCE hInst = LoadLibrary("jload.dll"); if (hInst == NULL){ return false; } //関数アドレスを設定 pl=(pload)::GetProcAddress(hInst,"load"); if (pl == NULL) { FreeLibrary(hInst); return false; } int size = pl(filename, NULL); if( size != 0) { char* buf = (char*)malloc(size); pl(filename, buf); free(buf); } // 最後にライブラリをアンロード FreeLibrary(hInst); return (0); } <DLLの中身> library test; uses Windows,Classes,Graphics,jpeg; function load(fn:PCHAR; mem: PCHAR): Integer;export;stdcall; var jpg:TJpegImage; bmp:TBitmap; ms: TMemoryStream; begin jpg:=TJpegImage.Create; bmp:=TBitmap.Create; ms := TMemoryStream.Create; // Result := 0; jpg.LoadFromFile(fn); bmp.Assign(jpg); bmp.SaveToStream(ms); ms.Seek(0, soFromBeginning); if Assigned(mem) then begin CopyMemory(mem, ms.Memory, ms.Size); end; Result := ms.Size; ms.free; jpg.free; bmp.free; end; exports load name 'load'; begin end. 上記DLLで間違いがありましたらご教授願います。 本当に何度も申し訳ありません。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.