仕事のカタマリにようこそ!  [ ログイン | ユーザ登録 ]
フォーラムから検索

機械用3D-CAD SolidWorks非公認のユーザサイトです
 
 
Web katamari.org
仕事のカタマリ
ホーム リンク集 ダウンロード フォーラム(掲示板) FAQ お問い合わせ









フォーラムニュース: 質問、相談カテゴリに「SolidWorks操作方法」に関するフォーラムを追加しました。(2003/11/27)
いらっしゃい、 ゲストさん. まずはこちら→ ログイン または 登録. 2024/11/23 - 13:17:55
ホーム ヘルプ 検索 ログイン 登録

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: SW2008アドインメニュー(DLL)のタイプライブラリ 前のトピック 次のトピック
ページ: [1] Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: 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)
 Addin1.lzh
議長に報告する   記録済み
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がインストールすることで回避しようと思っています。

ご指摘、助言ありがとうございました。
以上です。
議長に報告する   記録済み
ページ: [1] Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: SW2008アドインメニュー(DLL)のタイプライブラリ 前のトピック 次のトピック
ジャンプします: