2013年8月12日月曜日

OleCreatePropertyFrame() を 64bit で使いたい

っていう必要がありまして、しばらく調べていました。

普通ですと、olepro32.dll を取り込んで使うわけですが、これはどうやら x64 をターゲットにすると、「そんな DLL ないよ?」というエラーになる。

調べていると、同じ症状が出て困っている方も多数。で、解決策としてあがっているのは、「ターゲットを x86 にすればいいよ」

って、そんなことはわかってるんですよ。ただ、他の DLL とかシステム全体とかのからみもあるんで、ターゲットは x64 のままにしとかなければならないんです。そんな場合の解決策が見つからない…

で、さらに調べていたら、oleaut32.dll っている DLL の中にも同名の関数 OleCreatePropertyFrame() があることがわかりまして、とりあえず使ってみました。

おっ、これは x64 でも動くじゃないですか。しかも、引数とか olepro32.dll のやつと同じ。検索するとよく見つかる、olepro32.dll の OleCreatePropertyFrame() を使う方法をそのままコピペって、olepro32.dll の部分を oleaut32.dll に書き換えるだけで使えた。

細かい違いとかがあるのかどうかはこれから調べるとして、とりあえず x64 でも OleCreatePropertyFrame() が動いたよ。っていうお話でした。