- PR -

C#初心者です。C#で作成したDLLをC#で使用する。

1
投稿者投稿内容
C_rotte
会議室デビュー日: 2007/05/24
投稿数: 3
投稿日時: 2007-05-24 18:16
はじめまして。
今回はじめてこちらに参加させていただきます。
C#でプログラム開発を行っているのですが、
現在同じソリューションにある”プロジェクト”「A」と「B」を別の
ソリューションにしようと思っています。

現在設定しているAプロジェクトでのBの参照設定を削除し、
C++を使うみたいに、DLLImportを使って使用しようとやってみたのですが
上手くいきません。

そこで、
@呼ばれる側のC#プログラム「B」はどのように作ればよいのか?
A呼ぶ側のAプログラムは「B」をどのように使えばよいのか?
この方法をご存知の方ご教示願いますよう
お願いします。

※C#でC++のDLLを使うやり方は幾つかあったのですが、
C#のDLLを使う方法が見つかりませんでした。
呼ばれる側のBのプログラムも何らかの変更がいるのでしょうか?

よろしくお願いします。

※ご返答ありがとうございます。
不満というより、別々のソリューションにして開発を行うのが目的です。
>DllImport は無理です。
>諦めて参照設定してください。
ということは、やはりC#どうしは参照設定をして利用するしかないのでしょうか?
DLLImportに限らず方法は無いのでしょうか?


皆様、ご回答ありがとうございました。
ご指摘のとおり、参照設定で行います。
ありがとうございました。

[ メッセージ編集済み 編集者: C_rotte 編集日時 2007-05-24 18:31 ]

[ メッセージ編集済み 編集者: C_rotte 編集日時 2007-05-25 10:36 ]
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2007-05-24 18:25
DllImport は無理です。
諦めて参照設定してください。
というか何が不満ですか?

// プラグインのように動的に解決するには Assembly.LoadFrom を使用しますが、DllImport は静的解決ですし。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2007-05-24 18:50
同じソリューションでないと参照できないと考えているという事でしょうか?
別ソリューションでも参照できますよ。(mscorlib.dll や System.dll などがそうであるように)

# 元の投稿を編集して返信すると、他人に気付かれにくいですよ。
_________________
囚人のジレンマな日々
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-05-25 07:48
引用:

C_rotteさんの書き込み (2007-05-24 18:16) より:

不満というより、別々のソリューションにして開発を行うのが目的です。
>DllImport は無理です。
>諦めて参照設定してください。
ということは、やはりC#どうしは参照設定をして利用するしかないのでしょうか?
DLLImportに限らず方法は無いのでしょうか?


別ソリューションで開発するならアセンブリを参照設定すると思うのですが、
実際何が問題になっているのでしょうか?
_________________
かるあ のメモスニペット
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-05-25 09:53
別のソリューションで開発する時も開発段階においては DLL となっているプロジェクトを
「既存のプロジェクト」 として追加し 「プロジェクト参照」 + 「VSS」 を使うことを強く推奨します。

メリットとしましては、
  1. DLL アセンブリ側もデバッガで後追いできる
  2. バージョン管理をする必要がない
  3. 変更の適用と修正後の不具合によるバージョンの差し戻しが容易
などが挙げられます。

その DLL が完成品であっても品質に問題のことが少なからずあるため、デバッグで追えることが望ましいです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
大ベテラン
会議室デビュー日: 2006/12/15
投稿数: 157
投稿日時: 2007-05-25 10:53
そもそもDllImportを使うべきところがどういうところなのかをC_rotteさんが認識されてないと思うのでややこしくなっているように思います。

Win32 APIやDLL関数を呼び出すには?

DllImportはアンマネージドなDllを.Netで開発したプログラムから使うための物で、.Netで開発したDll等はDllImportを使わないで参照設定だけでいいですよって言ってるんです。
(というかHongliangさんのおっしゃるとおり出来ないですが)

じゃんぬねっとさんがおっしゃるとおり、メリットも多いですので特に否定要素が無いならば参照設定した状態で開発してみてはいかがでしょうか?
(デバッガで動かせるのが一番うれしかったVB=>C#移行者)
1

スキルアップ/キャリアアップ(JOB@IT)