- ベストアンサー
VisualStudio2005でのDLL作成
- VisualStudio2005を使用してWin32DLLを作成する方法について教えてください
- VBなどから呼び出せるWin32DLLを作成しましたが、AccessVBAから参照設定ができません。修正方法を教えてください
- VisualStudio2005でのDLL作成時に注意すべきポイントはありますか
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
やるとすれば ATLプロジェクトでしょうね Win32プロジェクトから作るとなると COM回りもすべて自前で実装 といった大掛かりなものになりそうです ATLならばCOM周りをライブラリーに任せてしまって 生成するオブジェクトとUIを付け足すだけでそれなりのものが出来るでしょう VC付属の MSDN(ヘルプ)で VC++ リファレンス ATL 以下を参照してみてください
その他の回答 (3)
- redfox63
- ベストアンサー率71% (1325/1856)
参照設定 ... 事前バインディング CreateObject/GetObject ... 遅延バインディング という違いです どちらも対象はActiveX(COM)です 遅延バインディングの関数名からも分かるように何かのObjectを生成出来ないとこれらを使うことは出来ません 事前バインディングなら dim obj as myDLLObject Set obj = new myDLLObject 遅延バインディングなら dim obj as Object Set obj = CreateObject( "myDLLObject.Sample" ) といった具合の使い方になります # CreateObjectの引数は適当です
お礼
ActiveXという名の拡張子がDLLということですか? プロジェクトでは何になるのですか? VisualStudioで作成可能ですか? 回答はありがたいですが、質問の答えにはほとんどなっていないです。 参照のしかたではなく参照できるものを作りたいのです。
補足
大変失礼しました。 参照設定とCreateObjectの違いではなく 参照設定とCreateObjectに対するDLLの作成のしかたの違いが知りたかったのです。 こちらの質問のしかたが悪かったのに「質問の答えにほとんどなっていない」などと言ってしまい、本当にすいません。 ご回答ありがとうございました。
- redfox63
- ベストアンサー率71% (1325/1856)
参照設定して使いたいなら ActiveXDLL(またはOCX)を作らないといけないでしょう 単にAccesVBAからDeclareで呼び出すのであればWin32DLLでも出来ます この際きおつけるのは 関数の呼び出し方式が C/C++用の cdeclではなく stdcallに変更することです 外部への公開はするのは defファイルでかまいませんが ソースを C++(cpp)で書いているのであれば 公開する関数を extern "C" { } でくくる必要も出てきそうです
お礼
回答ありがとうございます。 ActiveXとDLLの違いが理解しきれていませんでした。 参照設定でもCreateObjectでも同じなんでしょうか? extern "C"についてはどこかで見ました。 そのときはdefファイルを使うならいらないとあったので 書いていませんでした。加えてみます。
- Yanch
- ベストアンサー率50% (114/225)
この辺のサイトを参考にActiveX コンポーネントを作成すれば、VBAから呼び出せると思いますよ。 http://msdn.microsoft.com/en-us/library/ms221375.aspx
お礼
度々回答ありがとうございます。 参照してみます。