たけです。いつもお世話になっています。
使用したいCOMをyyy.hにて
#import ../Exe/xxx.dll no_namespace named_guids raw_interfaces_only
と記述しコンパイルしたところ↓のエラーがいくつか出てしまいました。
..\Include\yyy.h(27) : error C2772: #import は存在しない型ライブラリから型を参照しま
したす; '__missing_type__' はプレースホルダとして使用されます
d:\testspace\hoge\xxx.tlh(2219) : error C2061: 構文エラー : 識別
子 '__missing_type__' がシンタックスエラーを起こしました。
d:\testspace\\hoge\xxx.tlh(2223) : error C2061: 構文エラー : 識別
子 '__missing_type__' がシンタックスエラーを起こしました。
d:\testspace\\hoge\xxx.tlh(2227) : error C2061: 構文エラー : 識別
子 '__missing_type__' がシンタックスエラーを起こしました。
d:\testspace\\hoge\xxx.tlh(2231) : error C2061: 構文エラー : 識別
子 '__missing_type__' がシンタックスエラーを起こしました。
d:\testspace\\hoge\xxx.tlh(2235) : error C2061: 構文エラー : 識別
子 '__missing_type__' がシンタックスエラーを起こしました。
d:\testspace\\hoge\xxx.tlh(2272) : error C2061: 構文エラー : 識別
子 '__missing_type__' がシンタックスエラーを起こしました。
d:\testspace\\hoge\xxx.tlh(2304) : error C2061: 構文エラー : 識別
子 '__missing_type__' がシンタックスエラーを起こしました。
d:\testspace\\hoge\xxx.tlh(2307) : error C2061: 構文エラー : 識別
子 '__missing_type__' がシンタックスエラーを起こしました。
実は、このままの状態で今まで使用していたPCではちゃんとコンパイルが通るのですが
以前のPC(開発環境:VC6.0、MFC、Win2000)
今回、WindowsXPに環境を変えたところ、上記のエラーが発生するようになってしまいま
した。
またCOMは、VB6.0で作成したものです。
使用するCOMは動作確認が出来ているものなので、COMファイルが
おかしいということはないはずです。
何が原因として考えられますでしょうか?
開発環境:VC6.0、MFC、WinXP
> #import ../Exe/xxx.dll
とりあえず、上記の場所に指定のDLLは本当に存在するでしょうか?
はい。存在します。
このdllから、xxx.tlhが生成されてそこでもエラーがでています。
私もちょっとあやしんで
ためしに、> #import ../Exe/xxx.dll ←をフルパスにしたのですが
現象は同じでした。
存在しないdllだと以下のエラーがでますね。
..\Include\yyy.h(27) : fatal error C1083: タイプ ライブラリ ファイルがオープンできませ
ん。'../Exe/xxx.dll': No such file or directory
ところで発生しているエラーは、なんで変な日本語なんですかね~。
>C2772: #import は存在しない型ライブラリから型を参照しましたす
へんな日本語エラーだから、検索でひっかりそうなものですが、情報が少ない。
英語のリソースを漁るしかなさそうですね。
……ていうか,調べてみました。
要するに,xxx.dll 自身は特に問題はないけども
その中でまた別のCOMを使っているのではありませんか?
そのCOMのありかが分かんなかった,というエラーのようです。
pseudoさん、ありがとうございます。
調査したところ、メソッドの引数に「ByVal DB As OraDatabase
」を宣言している箇所が、tlhファイルで、
__missing_type__になっているということがわかりました。
oracleのdllが見えていないのかもしれません。
原因がわかりました。
以前はOracle9iを使用していたのですが、10gに変更したことが原因でした。
使用するCOMでは、oip9.dllを使用しているのに、oip9.dllが10g環境では
存在しないことからエラーになっていたようです。
ただ、もとの環境で作成したexeファイルは、10g環境でもちゃんと動いているのが
少し不思議です。