C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[4]: #import について
(過去ログ 88 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 7 記事 (1 - 7 表示)] <<
0
>>
■52543
/ inTopicNo.1)
#import について
▼
■
□投稿者/ 雲
(20回)-(2010/08/14(Sat) 09:27:09)
分類:[C/C++]
こんにちは。
最近、COM を使って遊んでいると、_com_ptr_t というものを知りました。
また、これを使う際には、以下のような記述をしておくと、自動的に CLSID などを
設定してくれる。ことまでは調べることが出来ました。
#import "msxml.dll" no_namespace named_guids
が。。。visualStudio 2010 で素直に上記の文を書くとコンパイル時に、
fatal error C1083: タイプ ライブラリ ファイルを開けません。'msxml.dll': No such file or directory
とコンパイラに怒られてしまいました。単純にパスが通っていないだけだとは思うのですが、どこにパスを
張ればよいのでしょう?
検索すると、SxS には入っているようですが。。。
まさか、SxS にリンクを張るのが正しいとは思えず困っています。
よろしくお願いします。
引用返信
編集キー/
編集
■52544
/ inTopicNo.2)
Re[1]: #import について
▲
▼
■
□投稿者/ 雲
(21回)-(2010/08/14(Sat) 09:37:52)
ごめんなさい。訂正をさせてください。
> #import "msxml.dll" no_namespace named_guids
ではなく
#import <wincodecodecs.dll> named_guids
でコンパイル時に怒られてしまいます。
引用返信
編集キー/
編集
■52545
/ inTopicNo.3)
Re[2]: #import について
▲
▼
■
□投稿者/ 雲
(22回)-(2010/08/14(Sat) 11:18:04)
> でコンパイル時に怒られてしまいます。
追記します。↓
fatal error C1083: タイプ ライブラリ ファイルを開けません。'c:\windows\system32\windowscodecs.dll': タイプ ライブラリ/DLL の読み込みエラーです。
でも、探すと、ちゃんと、DLLはSystem32以下にあるのですが。。。
引用返信
編集キー/
編集
■52546
/ inTopicNo.4)
Re[3]: #import について
▲
▼
■
□投稿者/ 魔界の仮面弁士
(1748回)-(2010/08/14(Sat) 11:44:08)
2010/08/14(Sat) 11:50:25 編集(投稿者)
■
No52545
(雲 さん) に返信
> fatal error C1083: タイプ ライブラリ ファイルを開けません。'c:\windows\system32\windowscodecs.dll': タイプ ライブラリ/DLL の読み込みエラーです。
windowscodecs.dll の場合、DllGetClassObject 関数がエクスポートされているところをみると、
OLE コンポーネントオブジェクト DLL ではあるようですが、(msxml.dll とは違って)型情報を持った
ActiveX DLL では無いようです。これ自身にはタイプライブラリが含まれていないようなので、
無理に参照しようとしても、0x80029C4A (TYPE_E_CANTLOADLIBRARY) 等になってしまうことでしょう。
C/C++ は専門外なので、具体的な設定方法等についてはさっぱり分からないのですが、
とりあえず "windowscodecs" で検索したところ、下記の記事がヒットしました。
WIC API の COM インターフェイスを使うための解説文のようですが、参考になるでしょうか。
http://msdn.microsoft.com/ja-jp/magazine/cc500647.aspx
引用返信
編集キー/
編集
■52547
/ inTopicNo.5)
Re[3]: #import について
▲
▼
■
□投稿者/ 渋木宏明
(41回)-(2010/08/14(Sat) 11:59:43)
> fatal error C1083: タイプ ライブラリ ファイルを開けません。'c:\windows\system32\windowscodecs.dll': タイプ ライブラリ/DLL の読み込みエラーです。
>
> でも、探すと、ちゃんと、DLLはSystem32以下にあるのですが。。。
.dll にタイプライブラリが格納されていないんでしょう。
別途タイプライブラリファイル(通常は拡張子 .tlb)が提供されているようなら、それを #import してください。
引用返信
編集キー/
編集
■52548
/ inTopicNo.6)
Re[4]: #import について
▲
▼
■
□投稿者/ 渋木宏明
(42回)-(2010/08/14(Sat) 12:13:43)
2010/08/14(Sat) 12:14:55 編集(投稿者)
> WIC API の COM インターフェイスを使うための解説文のようですが、参考になるでしょうか。
>
http://msdn.microsoft.com/ja-jp/magazine/cc500647.aspx
この記事は .tlb (つまりは #import ディレクティブ)を使ってないですね。
.tlb が提供されていない場合、ヘッダファイルなどからインターフェース定義が得られているなら、_COM_SMARTPTR_TYPEDEF マクロで特定のインターフェース用のスマートポインタを定義することができます。
引用返信
編集キー/
編集
■52551
/ inTopicNo.7)
Re[4]: #import について
▲
▼
■
□投稿者/ 雲
(23回)-(2010/08/14(Sat) 18:14:48)
雲です。
> .dll にタイプライブラリが格納されていないんでしょう。
> 別途タイプライブラリファイル(通常は拡張子 .tlb)が提供されているようなら、それを #import してください。
探してみましたが、探し方が悪いのか .tlb のファイルは見つからなかったので、_COM_SMARTPTR_TYPEDEF を使う
方向で。
>WIC API の COM インターフェイスを使うための解説文のようですが、参考になるでしょうか。
>
http://msdn.microsoft.com/ja-jp/magazine/cc500647.aspx
はい。これを参考に、CComPtr なんかを使っていたのですが、_com_ptr_t を使ってみたくなって質問をしてしまいました。
本当は、C# から Windows Imaging Component を使いたかったのですが、C++ から使うことを求められることがあって
四苦八苦しています。
(C++ で画像を読み書きする場合は、GDI+で画像を読み書きするのはできるのですが、使い方が悪いのか、GIF の書き出しが
うまくいかず、面倒になって?WICへ浮気中です)
でも、あまり、WIC の記事は日本語/英語を問わず少ないのにちょっとびっくりしました。
(そういえば、GDI+の記事も少なかったような。。。簡単すぎてあまり記事になっていないのもしれませんが、雲には、
なかなか厳しい現実です(^^))
とりあえず、_COM_SMARTPTR_TYPEDEFを定義する方向で進めたいと思います。
ありがとうございました。
解決済み
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-