• 締切済み

VS2010でC#のDLLを作成する手順

Visual Studio 2010でVisual C#のコードのDLLを作成したいのですが 簡単なコード例で具体的な操作手順を教えていただけないでしょうか。 (Microsoft Visual Studio 2010、OS WindowXP) Visual C++でDLLを作成する手順については 「チュートリアル: ダイナミック リンク ライブラリの作成と使用 (C++)Visual Studio 2010 」 <http://msdn.microsoft.com/ja-jp/library/ms235636(v=vs.100).aspx> に詳しく手順が記載されていましたが、このVisual C#版が見たいのですが見当たりませんでした。 よろしくお願いします。

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.4

> 「チュートリアル: ダイナミック リンク ライブラリの作成と使用 (C++)Visual Studio 2010 」 でいう DLL は C# では作れません。 C#では、.NETライブラリアセンブリ(拡張子 .dll)を作成できますが別物です。 DLL http://msdn.microsoft.com/ja-jp/library/1ez7dh12(v=vs.80).aspx アセンブリ (.NET) http://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA_(.NET)

yam2012
質問者

お礼

まだ解決していませんが 時間が経っていますので一旦クローズします。 ありがとうございました。

yam2012
質問者

補足

最初は状況がよく把握できていませんでしたのでいろいろ調べていましたが、 DLLには (1).NETによるDLL (2)COMによるDLL (3)それ以外のDLL(C,C++,Win32API) の3つがあり、 質問したサイトのは(3)のDLLの作り方で、 一方、C#では(1)と(2)のDLLしか作成できないから C#では質問したサイトのDLLは作れないという理解で正しいでしょうか。 つまり、C#では、Windowsフォームアプリケーションやコンソールアプリケーションなどから 他で作成したC,C++のDLLや、Win32APIのDLLを呼び出すプログラムは作成できるが、 C,C++のDLL自体は作成できないという理解で正しいでしょうか。

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.3

VC#2010EEでもプロジェクトの種類を「クラス ライブラリ」にするだけでしたね。 ちゃんと説明のところに「C# クラス ライブラリ(.dll)を作成するためのプロジェクトです。」と出てました。

yam2012
質問者

お礼

まだ解決していませんが(ANo.2の補足参照) 時間が経っていますので一旦クローズします。 ありがとうございました。

回答No.2

単に,クラスライブラリのプロジェクトで作り始めれば良いだけだと思いますけど. 使用したいクラスを作って,公開したいメソッドを作成して, ビルドすれば,DLLが生成されるでしょう. あとは,それを使う側から,参照設定で,DLLを指定して読み込んで 使うだけですよね.

yam2012
質問者

お礼

まだ解決していませんが 時間が経っていますので一旦クローズします。 ありがとうございました。

yam2012
質問者

補足

>あとは,それを使う側から,参照設定で,DLLを指定して読み込んで >使うだけですよね. 理解するのに時間がかかりましたが、なんとか、VS2010で、 C#のクラスライブラリのプロジェクトで ( .NET Framework 形式の ) DLL が作成できました。 このDLLをテストするために、同様に、VS2010で C#のコンソールアプリケーションのプロジェクトを作成していますが このコンソールアプリケーションのプロジェクトから クラスライブラリのプロジェクトで作成したDLLを 参照設定する仕方がよく分からないのですが ? コンソールアプリケーションのプロジェクトの 「参照の追加」のダイアログボックスの「参照」タブで、 クラスライブラリのプロジェクトで作成したDLLファイルを 指定すればよいのでしょうか。でもこの方法だと VBEの「参照設定」の「参照」ボタンがありませんので 「1つ上のフォルダへ」ボタンで クラスライブラリのプロジェクトのbin/Debug/ClassLibrary1.dll まで1階層ずつ移動して選択する感じになりますが? その前に、このDLLファイルを、 このDLLを使用するプロジェクト (コンソールアプリケーションのプロジェクト) に追加しておく必要があるのでしょうか。 その場合には、どのようにプロジェクトにDLLファイルを 追加すればよいのでしょうか。 それとも、作成したDLLを登録をすると コンソールアプリケーションのプロジェクトの 「参照の追加」のダイアログボックスの「.NET」タブ の一覧に表示されるようになるのでしょうか。 よろしくお願いします。 ・DLLのプロジェクト ---Class1.cs----------------------------------- using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace ClassLibrary1 {  public class Class1  {   public void test()   {    MessageBox.Show(     "テスト",     "TEST",     MessageBoxButtons.OK,     MessageBoxIcon.Information);   }  } } -------------------------------------- ・DLLをテストするプロジェクト ---Program.cs----------------------- using System; using System.Collections.Generic; using System.Linq; using System.Text; using ClassLibrary1; namespace ConsoleApplication1 {  class Program  {   static void Main(string[] args)   {    Class1 obj;    obj = new Class1();    obj.test(); }  } } ----------------------------------

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

「C# DLL」で検索したら… http://msdn.microsoft.com/ja-jp/library/3707x96z%28v=vs.80%29.aspx なんてページが見つかりました。 VS2005向けでしたのでURLを書き換えると… http://msdn.microsoft.com/ja-jp/library/3707x96z%28v=vs.100%29.aspx なんてページがありました。 IDEで可能なのか…は不明です。 # VC#2010 ExpressEditionしかありませんので…。

yam2012
質問者

お礼

まだ解決していませんが(ANo.2の補足参照) 時間が経っていますので一旦クローズします。 ありがとうございました。

関連するQ&A

  • VB 2008 DLL作成の方法

    当方Visual Studio 2008のVB、C++で開発をしています。 VS2008のVBでクラスライブラリとして作成し、ビルドをしてDLLを作成したのですが、 対となるLIBファイルがどこにも見当たりませんでした。 VS6.0のVBではLIBファイルも作成されました。 VS2008のVBでLIBファイルを作成する方法をご存知の方いらっしゃいましたら教えてください。 LIBファイルを使用する理由は、VBで作成したDLLをC++に組み込むときにリンクさせる為です。 ※今回はLoadLibrary関数を使わず、LIBファイルを使おうと考えています 以上、宜しくお願い致します。

  • C#で作成したDLLをDelphiで呼ぶ方法

    プログラミング初心者です。 以下の内容について、どなたか教えてください。 Visual studio 2010(C#のフォームアプリケーション)とCOM(ActiveX Tool bar)で作成されたフォームをDelphiで呼び出すことは可能でしょうか。 上記の内容を試験的に作成し(Visual studio 2010C#のフォームにCOMから参照したToolbarを貼り付けた物)、プロジェクトの出力方式をクラスライブラリに変更して、DLLの作成までは行えました。しかし、その先のDelphiからの呼び出し方がわかりません。 上記のDLLを用いてDelphiから呼び出す方法をご存知の方がいれば、教えてください。 なお現在の開発環境は以下の通りです。 Visual Studio 2010(C#) Delphi XE2(Trial) ご教授のほど、よろしくお願い致します。

  • VC++でDLL、エントリポイントが出来ない?

    VisualStudio2010 VC++でDLLを作成し既存のDelphiXE2アプリで利用したいのですが MSのサンプルソースそのままでDLLを作成しても、__stdcall;しても、Delphiの読み込み時に 「エントリポイントが見つかりません」と言われます。 http://msdn.microsoft.com/ja-jp/library/ms235636.aspx ソースはMSのチュートリアルそのままです。 ためしに VS2010のツール dumpbin.exe /exports ????.dll と中身を覗くと 1 0 ooo11104 ?Add@MyMathFuncs@MathFuncs@@SGNNN@Z 2 1 ,,,,,,,,,,,,,, のような表示とSummary 以下しか表示されずスタティックライブラリにしても中身は同じです。 それでは、と他のDLLをいくつか覗いてみましたが、大概のDLLやLIBファイルを覗くと すっきりしたきれいな関数名の一覧がdumpbin /exports で表示されます。 では、DLLになっていないのかというと、作ったDLLを同じVC++でチュートリアル通りに 呼び出すと何の問題もなく使えますので、多分正常なのでしょう。 しかし、どうして エントリポイントの一覧が見える形にならないのか分かりません。多言語で利用するには 必要かと思います。 VC++で作成したDLLやLibが他の環境で使えないとは考えられないので、なにか、常識的な 部分を知らないのだと思いますが、どなたかよろしくお願いします。

  • dllファイルの作成手順

    今回初めてVisualStudio C++ にて作業しています。 初歩的な事を聞いてしまっているかもしれませんが、宜しくお願いします。 【環境】 WinXP SP3,VisualStudio2008 【目的】 InstallShield2009にて、カスタムアクションであるプロセスが 起動されているか否か(ロックファイル有無)の判定をしたいのです。 InstallShieldのサポートより指南頂いた回答は、 PSAPI.dll に含まれる PSAPI ライブラリを使用する方法でした。 【行った操作】 http://support.microsoft.com/kb/175030/ja http://www.networld.co.jp/is/pdf/tips/tips5.pdf まずは新アクションの追加を試みようと、下段リンク先にあります 手順に従いC++テンプレートでのCustomActionの作成をしました。 VisualStudio2008を起動し、 新しいプロジェクト>Visual C++>空のプロジェクト と選択。 C:\CustomActionにプロジェクト「CustomAction」を新規作成。 プロジェクト(P)>CustomActionのプロパティ>Release>リンカ 「$(OutDir)\$(ProjectName).exe」を 「$(OutDir)\$(ProjectName).dll」に書き換える。 ソースファイルからCustomAction.cppとCustomAction.defを新規作成。 CustomAction.cppとCustomAction.defは、 リンク先URLのサンプルコードと同じものです。 ビルドによってできたdllを用いて、URL先資料2/5ページ以降の 手順書通りにmslを作成するも、出来上がったmsiは 実行後即、異常終了するものでした。 何処かに手順ミスがあるのは間違いないのですが、 InstallShieldの操作の方は何度も見直していますので ミスがあるとしたらdllの作成で何処か間違えがあるのではと思い、質問いたします。 InstallShieldと言う、公になっているノウハウの少ないツールがらみではありますが、宜しくお願いします。

  • C#でC++のDllを使用する方法について

    下記のプログラムは、MSのダイナミックライブラリの作成と使用(C++)を 参考にして作成したライブラリと、その使用側の プログラムコードです。 共に、VS2013のC++で作成しています。 Q1) プログラムの作成をVS2013のC#に変更しまして、同様なプログラムが出来ますか? 注)下記のライブラリの部分は、そのまま使用して。 お手数ですが、宜しくお願いします。 ライブラリ(Releaseフォルダーの中): MathFuncsDll.dll MathFuncsDll.exp MathFuncsDll.lib MathFuncsDll.pdb 使用側プログラムコード(VS2013のC++) //Project:c:\wk_VS2013\TT_DllLibrary\TT_DllLibrary.sln #include "stdafx.h" #include <conio.h> //MSのダイナミックライブラリの作成と使用(C++)で作成したライブラリのヘッダー #include "Release\\MathFuncsDll.h" //using namespace std; #pragma comment( lib, "Release\\MathFuncsDll.lib" ) //========================== int _tmain(int argc, _TCHAR* argv[]){ //使い分け? //int main(){ double ans, a, b; a = 1.2; b = 5.6; ans=MathFuncs::MyMathFuncs::Add(a,b); fprintf(stdout, "a=%lf b=%lf ans=%lf です\n", a,b,ans); int aa = _getch(); return 0; }

  • VB.NETからC++のdll連携(double)

    プログラミング初心者です。 VB2010からC++で作成したDLLの配列連携で困っています。 下記のサンプルで整数配列(integer)の連携を確認できました。 しかし、double型の連携が同サンプルでは正しい値が渡されません。 (プラットフォーム呼び出しサンプルの”整数 ByVal の配列”を使用しました。) プラットフォーム呼び出しサンプル http://msdn.microsoft.com/ja-jp/library/8bbftkst(v=VS.90).aspx double型の配列は同じ方法で可能なのでしょうか。 別の方法でないと動作しないのであれば、そちらも教えてください。 よろしくお願い致します。

  • VS2008 の C++ で作成したEXEの実行

    Visual Studio 2008 の C++(C++ではなくC)で作成した実行ファイルを、Visual Studio 2008 がインストールされていないが別のPC(WinXP)で実行すると、 「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることにより問題が解決する場合があります。」 のエラーが出るだけで実行できません。 同様な内容のQ&Aも見ましたが、解決できないので質問します。 なお、参考になるかわかりませんが、 ・Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ  vcredist_x86.exe はインストールしてあります。 ・同じVisualStudio2008のC#で作成した実行ファイルは、正常に動きます。 ・別のPC(Win2000)では、 msvcr90d.dll を C:\WINNT\system32 フォルダに入れると、正常に動きます。 よろしくお願いいたします。

  • VC++2010のmsvcp100.dllについて

    私は、windows7 64bitで「Microsoft Visual C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1」や「Microsoft Windows SDK for Windows 7 and .NET Framework 4」 をインストールしました。 しかし、Message: Visual Studio C++ 2010のProgram Files (x86)\Microsoft Visual Studio 10.0\VC\redist\x86\Microsoft.VC100.CRT\msvcp100.dllが見当たりません。redistフォルダ自体が存在しません。 どうすれば、Program Files (x86)\Microsoft Visual Studio 10.0\VC\いかにredistフォルダとmsvcp100.dllを作成することができますか?

  • C++/CLIで作ったDLLが読み込めない。

    現在、Visual Studio 2010を使い、 C++/CLIで作ったDLLを、C#から呼び出すプログラムを作成しております。 Visual Studioのデバッグでは、正常に動作するのですが、 IISに設定してブラウザから確認しようとすると、 「ファイルまたはアセンブリ 'wrap.dll'、またはその依存関係の 1 つが読み込めませんでした。指定されたモジュールが見つかりません。」 というエラーが出てしまいました。 下記のサイトなどを参考に、 「ソリューションを1つにして参照設定する」、 「Releaseモードにする」などと実施してみましたが、 解決するには至っておりません。 http://social.msdn.microsoft.com/Forums/ja-JP/vcgeneralja/thread/23fd794a-7d8a-4153-9e1e-0358c38a84eb この原因と対処法に関して、ご助言頂きたいと思います。 宜しくお願いします。

  • Visual Studio .NET C# でDLLを作成し、VB.N

    Visual Studio .NET C# でDLLを作成し、VB.NETで呼び出す初心者向けのサンプルについて  現在、Visusal Studio .NET C#でDLLを作成して、それを、VisualBasic.NETのWindowsアプリケーションで呼び出す簡単なプログラムを作成したいと思っているのですが、書籍をあたってもなかなか参考になる書籍がみつけられなく、サンプルのサイト又は、自分でそのようなプログラムを作成している人にぜひご教授願いたく、質問させていただきました。当方、初心者ですので、何卒宜しくお願いいたします。