• ベストアンサー

VisualStudio2010 DLL作成方法

VisualStudio2010を使っています(初心者)。 VBで作成していたのですが、一部VC++を使わなければいけなくなりました。VC++はDLLで作成して、VBの方でDLLを参照して処理を行いたいと考えています。 そこで試しに作成したVC++で作成したDLLをVBで参照しようとしたらERRORになってしまい上手にできませんでした。※ERRORの内容までは詳しく覚えてません。VC++のDLLを作成~VBのDLLの参照までを説明しているサイトなどありましたら教えて下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

Win32 Projectで作ったDLLの場合,.NETのアセンブリは生成されません。 DllImport属性またはDeclare文を使ってメソッドを呼び出すようにしてください。

r32yokoyok
質問者

お礼

回答ありがとうございます。 Declare文を使って作成出来ました。

その他の回答 (1)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

VB.NETもC++/CLIも(C#も)根っこは同じ.NETなのでわざわざ使い分ける必要はないはずです。 「どうしてもVC++を使わなければならない」状況としては一応アンマネージコードの存在がありますが、「初心者」の段階でそれが必要になるとは思えないので何かカン違いしている可能性があります。 #課題とかで「C++/CLIでライブラリを作ってそれを使え」ということならわからなくもないですが。 あと、「ERRORの内容までは詳しく覚えてません」というのはダメです。 何故かというと、回答者にとっては「それが最も重要な情報」だからです。 場合によってはエラーメッセージからピンポイントで解決策が出ることもあります。 なんとなく「VC++側で作ったクラス用の名前空間参照が入ってないだけじゃね?」とは思うんですが。

r32yokoyok
質問者

お礼

回答ありがとうございました。 補足内容で追記して頂ければ幸いです。

r32yokoyok
質問者

補足

ちょうど再現できました。エラー内容は" ファイルがアクセス可能で、有効なアセンブリ または. COM コンポーネントであることを確認してください。"です。WIN32プロジェクトでDLLを作成しようとしたのですが、上記の内容でVBからDLLを参照できませんでした。

関連するQ&A

  • VisualStudio2005でのDLL作成

    開発環境 OS:WindowsXP SP2 SDK:VisualStudio2005 StandardEdition 言語:VC++ Win32コンソールアプリケーションのDLLを選択 空のプロジェクトを使用 作成したいのはVBなどから呼び出せるWin32DLLです。 他のホームページを参考にして以下のようなファイルを作成し ビルド->コンパイルしたところdllファイルはできましたが AccessVBAから参照設定ができませんでした。 どこを修正すればよいか教えてください。 <dlltest.cpp> #define EX __declspec (dllexport) #include <iostream> #include <windows.h> EX int fnWindowHook(void); BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call){ case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } EX int hundred(){ return 100; } <dlltest.def> LIBRARY "dlltest1" EXPORTS disp @1

  • VisualStudioのインストールエラー

    お世話になります。 WindowsXp(SP2)にVisualStudio(VB6やVCが入っている)をインストールすると、 インストールは必要なファイルのコピーを終えて、環境設定の時に 「MSADDNDR.DLLが登録できませんでした」とエラーになって、インストールできません。 ・Administratorでインストールしています。 ・VB6のランタイムがインストールされている上から実行しました。 こんな説明ですが、どなたか分かる方おられましたらよろしくお願いします。

  • VCで作成したDLLの使用

    VCで作成したDLLの使用 VC6.0で作成されたDLLファイルを使いたいのですが _stdcallで記述されたものではなく DllMainで記述されたものなのですが、 VBから呼び出す事は可能でしょうか? 普通にdeclare functionで呼び出そうとすると、 「エントリfnchogeがDLLファイル hoge.dll内に関数が見つかりません。」 とエラーがでるだけでした。 VB6.0SP3 Windows2000

  • VB6から参照可能なDLLの作成

    VB6から参照可能なDLLの作成を参考書をみながらしましたが、上手くいかない為質問させていただきます。 開発環境VC++ 2005 C++ CTEST.dll #include <windows.h> __declspec (dllexport) int __stdcall test(int i) { i = i + 5; return i; } .defファイル LIBRARY "test" DESCRIPTION EXPORTS A 以上でDLLを作成し、VB6側で Private Declare test Lib "CTEST.dll" (ByVal i as integer) で宣言しても「エラー53 ファイルがみつかりません」と表示されます。「参照の追加」から参照しようとしても「このファイルは参照できません。」をエラーがでてしまいます。 直すべき点はどの部分なのでしょうか? ご教示ねがいます。

  • ゲームにDLLをインジェクションして改造する目的でDLLを作成したいの

    ゲームにDLLをインジェクションして改造する目的でDLLを作成したいのですが、インジェクターは持ってますが、DLLの作り方がわかりません。なのでこんな初心者でも同じような目的でDLLを作成してる人・する人またはそのような作り方の乗ってるサイトなどあったら教えてください。使用しているソフトはVB2008とVCです。 また目的は違っても、DLLの作り方はわかればそこから学んでいきますのでDLLの作り方を書いたサイトがあればよろしくお願いします。一週間ごとにちがうDLLを用意しなければいけないので急いでます。(水曜日か木曜日までには別のDLLを用意しないと駄目)よろしくお願いします。

  • 16ビットDLLから32ビットDLLをコールする方法

    現在VC++で「16ビットDLLから32ビットDLLをコール」をしようと思って 調べていましたが、このご質問に頼るしか方法がなく、困っています。 状況  VB4.0(16bit)・・・16bit版でEXEを作成  VC++1.51・・・・・16bitDLLを作成  VC++4.0/6.0・・・・32bitDLLを作成  VB4.0(16bit)のEXEから、16bit版のDLLをコールし処理を行いたいの  ですが、16bit版DLLで扱えないVC++の関数(プロセス関数:spawn??())  を利用しなければならず、16bit版DLLの機能を32bit版DLLで作成し、  16bit版DLLから32bit版DLLを呼び出そうと思っております。 誰か助けて! 是非、皆様のお知恵を拝借致したく思います。

  • mdbにアクセスするDLLを作成したい

    プログラム初心者です。 mdbにアクセスし、レコードの登録、削除ができるDLLを 作成したいのですが、初心者的に簡単なのは VBかVCおよびc++どちらが作りやすいでしょうか?

  • visualstudioでc#のdllができない

    visualstudio2010を使用しています。 dllの作成をしたいのですが、なぜか作られません。 どこに手順を書きますのでどこに間違いがあるか教えてください。 (1)作成したプロジェクトを開く (2)ファイルー新しいプロジェクトを選択 (3)クラスライブラリを選択 (4)ソリューション(S):ソリューションに追加を選択ーOKボタン (5)DLLの中を書く (6)参照設定を選択する (7)ソリューションのプロパティのビルドでフォルダを指定する。 (8)ビルドする(もちろん通る) しかし、DLLはどこにも見当たらない。 検索しても、クラスライブラリを選択すれば自動的にできると書いてあるので、困り果てています 機能はMEFを使用し、僕ではない人が作ったDLLがすでに追加されており、僕もDLLを追加したいのですが、なぜかDLLが作成されません。 詳しいかたよろしくおねがいします。

  • VB2008でのDLL作成方法について

    はじめまして、はじめて投稿します。 初心者なので変な質問をしていたらすいません。VB2008を使用しています。 VBで作成したDLLファイルをLabviewで使用したいと思っています。 ただVB6.0でActiveX DLLを作成する方法はわかるのですが、VB2008で作成する方法がわかりません。 クラスライブラリでプログラムを作成し、DLLにすることはできるのです・ しかしレジストリに登録しようと思い「regsvr32 ファイルのパス**.dll」と入力したところ「**.dllは読み込まれましたが、DllRegisterServerエントリポイントが見つかりませんでした」と出ます。 調べてもVB2008でのActiveX DLL作成方法が見つからなくて困っています!!! わかるかた、よろしくお願いいたします。

  • VB6で作成したDLLをVC6で使用する方法

    VB6で作成したDLLをVC6で使用できなくて困っています。 以下にトライしたことを示します。 (1) VB6でTRUEを返すだけの関数を入れたActiveX DLLを作成 (2) VC6のLoadLibraryに成功(戻り値がNULL以外) (3) VC6のGetProcAddressに失敗(戻り値がNULL) (4) VC.NET付属のDumpbinユーティリティでは(1)で作成した関数が表示されない。 何が悪いのでしょうか。 宜しくお願いします。

専門家に質問してみよう