環境整備 †
ダウンロード †
- SourceForge.net: Files
- MinGW-5.0.2.exe - Minimalist GNU for Windows
- SourceForge.net: Files
- MSYS-1.0.10.exe - Minimal SYStem
インストール †
とりあえずサンプルプラグインをビルドしてみる †
- PDKのダウンロード: Chararina → PSDK
ソースの修正 †
pwsRTValue.h †
boolean → bool BOOL- ISO C++ forbids declaration of `boolean' with no type と怒られる
- 正直よくわかってない
- on BCC55
- winsock.h → windows.h → rpcndr.h
- typedef unsigned char boolean;
- windef.h によると BOOL は typedef int BOOL
- ということで、#define PWSRTValueH の下に
としてみた
#if defined( __GNUC__ ) typedef unsigned char boolean; #endif
biff.cpp †
- 61 行目の #else の上に
#elif defined( __GNUC__ ) extern "C" BOOL APIENTRY DllMain( HINSTANCE hinst, DWORD reason, LPVOID lpReserved )
- 2006-03-24 修正: GCC では extern "C" をつけないと呼ばれないらしい?
- PWCInitialize 関数内の以下をコメントアウト
if( major != 1 || minor < 50 || 59 < minor ) return FALSE;
pop3.cpp †
- main 関数をコメントアウト
C++ ソースのコンパイル †
g++ -c account.cpp g++ -c biff.cpp g++ -c configdlg.cpp g++ -c md5.cpp g++ -c pop3.cpp
リソースのコンパイル †
windres --language=0411 -o biff.rc.o biff.rc
- 2007/11/01: --language を追加 (from windres日本語対応. - とりあえず暇だったし何となく始めたブログ)
リンク †
dllwrap -k -def biff.def --driver-name g++ -o biff.dll account.o biff.o configdlg.o md5.o pop3.o biff.rc.o -lwsock32
- こんなんでもよさげ (.def 作らなくていい)
g++ -shared -o biff.dll account.o biff.o configdlg.o md5.o pop3.o biff.rc.o -lwsock32 -Wl,--kill-at
- -Wl,--kill-at がないと本体から呼べない
よくわからない点 †
- C++ でなく C でプラグインは書けないのだろうか → pwsRTValue.h
To Do †
- とりあえず biff を動かす (なぜか設定ダイアログが出ない)
- FreeBSD 上でのクロスコンパイル環境
その他メモ †
- MSVC の .lib ファイルを .a に
- reimp foo.lib
- reimp は mingw-utils に入ってる
- libfoo.a ができる
- C:\MSYS\1.0\local\lib あたりに置いておく
.def があるなら dlltool -U -d foo.def -l libfoo.a でもよさげ- うまくいかない (実行時にエントリポイントが見つからないと言われる) 関数名に _ が追加されてる?
- reimp foo.lib
参考 †
Last-modified: 2009/10/23 (金) 18:27:21 (316d)