- - PR -
C#で作成したDLLのメソッドを別のプロジェクトから参照したい。
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-12-08 19:47
お世話になります。
C#.NET2.0でWEBアプリを作成しております。 1か月程度の初心者です。 以下でDLLのメソッドを呼びたいのですが、「DLL 'test.dll' の 'Hello' というエントリポイントが見つかりません。 」というエラーになってしまいます。 なぜでしょうか? すみません。ご教授お願い致します。 作成したDLLのソース using System; using System.Collections.Generic; using System.Text; namespace test { public class Class1 { public string Hello() { return "Hello!"; } } } DLLを呼ぶプロジェクトのソース。 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Runtime.InteropServices; public partial class _Default : System.Web.UI.Page { [DllImport("test.dll")] private extern static bool Hello(); protected void Page_Load(object sender, EventArgs e) { Hello(); } } | ||||
|
投稿日時: 2008-12-08 20:36
エラーのとおりでしょう。 この test.dll は C の静的ライブラリか何かでしょうか? DumpBin か何かでどんな名前でエクスポートされているか確認しましょう。 まさかとは思いますが test.dll は .NET のクラス ライブラリ (DLL) アセンブリだったりしませんよね? (たまに混同している方がいるもので念のため確認)。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2008-12-09 10:34
すみません。おっしゃる通り.NETで作ったライブラリです。
C等はやったことがないので他のDLLとの違いがわからないのですが・・・ ちょっと調べたところ、CなどのDLLはdumpbinで確認するみたいですね。 一応今回のもdumpbinで確認してみたのですが、確認できませんでした。 混同しているので違いについて調べてみます。 | ||||
|
投稿日時: 2008-12-09 10:42
.NET アセンブリなら、Web アプリのプロジェクトが test.dll を参照すれば、
という風にメソッドを呼べると思いますが。 Visual Studio のソリューションエクスプローラー上で Web アプリのプロジェクトを右クリックし、 「参照の追加」を選んで test.dll を追加してみて下さい。 _________________ Nakamura Blog | ||||
|
投稿日時: 2008-12-09 11:32
できました!ありがとうございます。
これからテストではない方を実装していきたいと思います。 | ||||
|
投稿日時: 2008-12-09 19:05
続けてもう一つ質問なのですが、引数の戻り値を取得する場合にはどのように
したらよろしいでしょうか? 作成したDLLのソース public class Class1 { public string Hello(string prm) { prm ="戻り値" } } メソッド呼び出し test.Class1 c = new test.Class1(); string callprm c.Hello(callprm); こんな感じでやってみたのですができませんでした。。。 [ メッセージ編集済み 編集者: SANB 編集日時 2008-12-09 19:05 ] | ||||
|
投稿日時: 2008-12-09 20:04
引数と戻り値は別物なわけですが、呼び出し先で変更された引数の値を取得という意味であれば、引数には out か ref の属性を付ける必要があります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2008-12-10 13:55
ありがとうございます!
以下でできました。 refだと未割り当ての〜〜エラーになってしまいました。 参照型だからでしょうか。。。 作成したDLLのソース public class Class1 { public string Hello(out string prm) { prm ="戻り値" } } メソッド呼び出し test.Class1 c = new test.Class1(); string callprm c.Hello(out callprm); |