Random Thoughts |
A priest, a rabbi, and a minister walk into a bar. The bartender says, What is this, some kind of joke?
|
言語 |
|
|
|
フォーラムニュース: 質問、相談カテゴリに「SolidWorks操作方法」に関するフォーラムを追加しました。(2003/11/27) |
いらっしゃい、 ゲストさん. まずはこちら→ ログイン または 登録. 2024/11/23 - 13:17:55 |
|
|
|
著者
|
トピック: SW2008アドインメニュー(DLL)のタイプライブラリ (閲覧数 3388 回) |
|
jc-t
新人さん
オフライン
投稿: 2
I'm a llama!
|
|
SW2008アドインメニュー(DLL)のタイプライブラリ
« 投稿日: 2008/10/21 - 15:07:31 » |
|
いつもお世話になり、ありがとうございます。m(__)m
SolidWorks2008のアドインメニューを作成しているのですが、アドインメニュー のDLLと併せて生成される、タイプライブラリの生成についてご教示ください。 # 長文となること、ご容赦ください。
以下の環境で、SolidWorks のアドインテンプレートを用いてアドインメニューを 作成しました。 ・マシンA - WinXP SP2 - VisualStudio 2005(VB)SP1 - .NET Frameowkr v2.0(v2.0.50727) - SolidWorks 2008 SP0.0
このマシンAで作成したアドインメニューのソースコード一式を、別のマシンへコピー します。 ・マシンB - WinXP SP2 - VisualStudio 2005(VB)SP1 - .NET Frameowkr v2.0(v2.0.50727) # OSや開発環境はマシンAと同じだが、SolidWorks はインストールされていない。
マシンBは、ビルド、ユーザへの配布ファイル作成専用にしているため、ビルドに必要な ソフトウェア環境のみとしています。 そのため、マシンAでビルドして作成したアドインメニューのDLLには、COMのラッパーDLL (SolidWorks.Interop.sldworks.dllなど。)が併せて生成されますが、これらの ラッパーDLLは一旦別フォルダへ退避し、退避先のラッパーDLLを参照するように変更し、 マシンBでビルドエラーが発生しないようにしています。
このように作成したアドインメニューをマシンAとマシンB、それぞれでビルドすると、 アドインメニューのDLLと併せて生成されるタイプライブラリに差分が発生します。 ビルド結果をチェックすると、マシンBでは、以下のようなワーニングが出力されて いました。 -------------------- タイプライブラリエクスポータ警告:参照型がマネージコンポーネントで定義されて いますが、この参照型は、登録されていなかったために読み込めなかったタイプ ライブラリからインポートされています。 (型:"SolidWorks.Interop.swpublished.ISwAddin"、 コンポーネント:"C:xxxxSolidWorks.Interop.swpublished.dll")。 -------------------- この警告から調べたのですが、VisualStudio6.0ツールにあるOLE View等でタイプライ ブラリを確認すると、(本来はSolidWorksのインストール先フォルダにある)"swpublished .tlb"の参照、取り込みがうまくできていないようで差分が発生しているようです。 実際、これでSolidWorksに組み込み、CreateObject()で外部からSolidWorks起動後、 LoadAddin()メソッドを実行した際、エラーになったりしております。
この警告の回避方法、生成されるタイプライブラリの差分をなくす方法について、小職は SolidWorksをインストールした環境でビルドする以外、よい対処方法が思い当たりません。 どなた様か、ご存知のこと、ご指摘いただけることがございましたら、お知恵を拝借できれば と思います。 (ビルドするには、SolidWorksがインストールされていなくとも、COMのラッパーDLLが あれば問題なくビルドできると認識していたのですが、認識が足りないでしょうか。。。)
お手数ですが、ご教示くださいますようお願いいたします。m(__)m # 添付ファイルを追加いたします。(10/22)
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:SW2008アドインメニュー(DLL)のタイプライブラリ
« 返信 #1 投稿日: 2008/11/10 - 19:12:00 » |
|
jc-tさん、はじめまして。
># 添付ファイルを追加いたします。(10/22) 今頃気付いたので、少し見てみました。
アドインやCOMに関してはあまり詳しくないので、参考になるかわからないし、デタラメやうそを書くかもしれませんので、その辺はご容赦ください。
・・・で、 いろいろと関連のありそうなところを調べてみて、jc-tさんが書かれた >VisualStudio6.0ツールにあるOLE View等でタイプライブラリを確認すると、 のまねをして、SolidWoirksインストールフォルダにあるswpublished.tlbをOLE Viewで開いてみて思いついたことがありました。(知識ではなく、勘ですが・・・。)
OLE Viewで開いて、最小の方に「importlib("stdole2.tlb");」と書かれていたので、 stdole2.tlbをネットで検索すると、どうもVBのランタイム関連のモノと言うところにたどり着きました。 そこで、もしかしてjc-tさんのマシンBの方には、VBのランタイムは入ってないのかな? っと言うところが思いついたところです。
なんか意味不明な書き方になっているかもしれませんが、 ようは、「stdole2.tlbが必要かも知れない」という事です。
全然お役に立てないような気がしますが、ほんの少しでもお役に立てたらと思い書いてみました。
|
|
|
|
jc-t
新人さん
オフライン
投稿: 2
I'm a llama!
|
|
Re:SW2008アドインメニュー(DLL)のタイプライブラリ
« 返信 #2 投稿日: 2008/11/13 - 15:03:47 » |
|
いつもお世話になり、ありがとうございます。
>jc-tさん、はじめまして。 Makoronさん、いつもお世話になっております。
>OLE Viewで開いて、最小の方に「importlib("stdole2.tlb");」と書かれていたので、 >stdole2.tlbをネットで検索すると、どうもVBのランタイム関連のモノと言うところにたどり着きました。 >そこで、もしかしてjc-tさんのマシンBの方には、VBのランタイムは入ってないのかな? >っと言うところが思いついたところです。 > >なんか意味不明な書き方になっているかもしれませんが、 >ようは、「stdole2.tlbが必要かも知れない」という事です。
ご指摘ありがとうございます。 stdole2.tlbですが、ビルドするマシンBには存在しています。
SolidWorks社にも問い合わせ中なのですが、どうもビルドするマシンBにも SolidWorksがインストールされていないとうまくビルドされないようです。。。orz
SolidWorks.Interop.swpublished.dllがあれば、SolidWorksがインストールされて いない環境でも正しくビルドできるものだと思っていたのですが・・・しょうがないので しばらくはSolidWorksがインストールすることで回避しようと思っています。
ご指摘、助言ありがとうございました。 以上です。
|
|
|
|
|
|
|
|