環境をXPに変えたらCOMのimportでコンパイルエラー – プログラミング – Home

環境をXPに変えたらCOMのimpor...
 
通知
すべてクリア

[解決済] 環境をXPに変えたらCOMのimportでコンパイルエラー


たけ
 たけ
(@たけ)
ゲスト
結合: 24年前
投稿: 116
Topic starter  

たけです。いつもお世話になっています。

使用したい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


引用未解決
トピックタグ
RAPT
 RAPT
(@RAPT)
ゲスト
結合: 22年前
投稿: 310
 

> #import ../Exe/xxx.dll
とりあえず、上記の場所に指定のDLLは本当に存在するでしょうか?


返信引用
たけ
 たけ
(@たけ)
ゲスト
結合: 24年前
投稿: 116
Topic starter  

はい。存在します。
このdllから、xxx.tlhが生成されてそこでもエラーがでています。
私もちょっとあやしんで
ためしに、> #import ../Exe/xxx.dll ←をフルパスにしたのですが
現象は同じでした。


返信引用
たけ
 たけ
(@たけ)
ゲスト
結合: 24年前
投稿: 116
Topic starter  

存在しないdllだと以下のエラーがでますね。

..\Include\yyy.h(27) : fatal error C1083: タイプ ライブラリ ファイルがオープンできませ
ん。'../Exe/xxx.dll': No such file or directory

ところで発生しているエラーは、なんで変な日本語なんですかね~。
>C2772: #import は存在しない型ライブラリから型を参照しましたす

へんな日本語エラーだから、検索でひっかりそうなものですが、情報が少ない。


返信引用
pseudo
 pseudo
(@pseudo)
ゲスト
結合: 19年前
投稿: 3
 

英語のリソースを漁るしかなさそうですね。
……ていうか,調べてみました。
要するに,xxx.dll 自身は特に問題はないけども
その中でまた別のCOMを使っているのではありませんか?
そのCOMのありかが分かんなかった,というエラーのようです。


返信引用
たけ
 たけ
(@たけ)
ゲスト
結合: 24年前
投稿: 116
Topic starter  

pseudoさん、ありがとうございます。

調査したところ、メソッドの引数に「ByVal DB As OraDatabase
」を宣言している箇所が、tlhファイルで、
__missing_type__になっているということがわかりました。

oracleのdllが見えていないのかもしれません。


返信引用
たけ
 たけ
(@たけ)
ゲスト
結合: 24年前
投稿: 116
Topic starter  

原因がわかりました。
以前はOracle9iを使用していたのですが、10gに変更したことが原因でした。
使用するCOMでは、oip9.dllを使用しているのに、oip9.dllが10g環境では
存在しないことからエラーになっていたようです。

ただ、もとの環境で作成したexeファイルは、10g環境でもちゃんと動いているのが
少し不思議です。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました