C#で作成したDLLをC#から呼出したいのですが、うまくいきません。
// トリガ
private void button2_Click(object sender, EventArgs e)
{
string ans = DLL.moji();
MessageBox.Show(ans);
}
// DLL呼出し用クラス
class DLL
{
[DllImport("LibCsharp.dll")]
public static extern string moji();
}
// DLL(LibCsharp.dll内容)
class AddClass
{
public static string moji()
{
return ("テスト");
}
}
上記で実行すると「EntryPointNotFoundException DLL 'LibCsharp.dll' の 'moji' というエントリ ポイントが見つかりません。」となります。
プロジェクトの参照設定にはLibCsharpを追加しています。
Web上で調べたのですが、解決には至っておりません。
申し訳ありませんが、よろしくお願いします。
No.5ベストアンサー
- 回答日時:
#1です。
私もc#で簡易な独自ライブラリを構築しようとしていたので調べてみました。
結果として参照の追加でdllを直接、指定するだけで使用可能だと分かりました。
(「参照設定」右クリック→「参照の追加」→「参照」タブ選択→DLLを選択)
まず基本的な知識としてdllには3種類あると覚えて下さい。
・レガシー(古い遺産)dll
・active-x dll
・.net dll
私はレガシーdll時代の知識しかありませんでした。
この頃のdllを使用するためには、dll本体以外に以下のファイルが必要でした。
・ヘッダファイル
・ライブラリ(lib)ファイル
・defファイル(場合による)
c#で作られたdllは[.net dll]となり、[.net freamwork]上で動作する各種の言語で使用出来るようにするため、煩わしいlibファイルやヘッダファイル等を削除する方向でdllが進化しているのだと思われます。
ネット検索をしていて見つけたのですが、[.net dll]で作成されたFTPクライアントのライブラリがありました。
(.NET用FTPクラスライブラリ (TKFP.DLL) )
どの言語で作られているのか分かりませんが、[.net dll]で作られているため、c#およびvbで使用可能のようです。
追加したdll内に含まれているクラスや関数に対してオブジェクトブラウザで概要が表示出来るようにXMLファイルで概要を記述出来るようなのですが、詳細まで調べることが出来ませんでした。
(申し訳ありません。)
応答が遅くなり、大変申し訳ありません。
>結果として参照の追加でdllを直接、指定するだけで使用可能だと分かりました。
>(「参照設定」右クリック→「参照の追加」→「参照」タブ選択→DLLを選択)
できれば、呼出しができた時のサンプルを載せていただけるとありがたいです。
最初の質問にも記載しましたが、参照設定に追加した場合の動作が確認できておりません。
>プロジェクトの参照設定にはLibCsharpを追加しています。
>まず基本的な知識としてdllには3種類あると覚えて下さい。
いろいろ教えていただき、ありがとうございます。
サンプルのほう、よろしくお願いいたします。
No.4
- 回答日時:
ありがとうございます。
上記URLを参照することで、自作のものを使用することができました。
// トリガ
using LibCsharp;
private void button2_Click(object sender, EventArgs e)
{
string ans = AddClass.moji();
MessageBox.Show(ans);
}
ただ、自作ではないもの(DLLしかない状態)で呼び出す方法もご教授いただけると大変助かります。
ひょっとして同じ方法でできるのでしょうか。
No.3
- 回答日時:
#1です。
駄目なら、あとはネームスペースかな?
[AddClass]クラスは、なにかのネームスペース内で宣言されていると思います。
仮に[MyNameSpace]とします。
それを、[button2_Click]関数が記述されているソースコードの先頭で、[using MyNameSpace]と記述する必要があったのでは無かったかと思います。
ありがとうございます。
bluecampusさんの紹介してくださったURLに同様の内容がありました。
bluecampusさんにもお願いしていますが、C#で作成された単体のDLLを呼び出す方法もご教授いただけるとありがたいです。
重ね重ね、ご迷惑おかけします。
No.1
- 回答日時:
まず、試してはいない事を念頭に置いて下さい。
[LibCsharp.dll]の[moji]関数は[AddClass]クラスのメンバ関数ですよね。
呼び出す側は[moji]だけで呼び出そうとしていますが、それが[AddClass]内にあっては直接呼び出せないのではないかと思います。
以下で呼び出せるのではないかと思うのですが。。。
---------
// トリガ
[DllImport("LibCsharp.dll")]
private void button2_Click(object sender, EventArgs e)
{
string ans = AddClass.moji();
MessageBox.Show(ans);
}
上記サンプルの通り試してみましたが、エラーが発生してしまいました。
名前 'AddClass' は現在のコンテキスト内に存在しません。
引き続きご助言いただければありがたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- Windows 10 IT初心者です! powershellで以下のようなエラーが出ました オブジェクト参照がオブジェクト 1 2023/05/17 11:30
- フリーソフト cygewf-2.dllがない、と表示され、ダウンロードしたファイルが動作しない 2 2023/03/27 11:05
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- その他(OS) OBSが起動できません 3 2022/03/30 12:21
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
C#からDLLを呼びたいのですが・・・
C言語・C++・C#
-
C#でstringをポインタとして渡す
C言語・C++・C#
-
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
-
4
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
5
C#において、同じインスタンスを何度もnewしてよいでしょうか。
その他(プログラミング・Web制作)
-
6
Visual Studio 「AnyCpu」について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB6.0(SP6)にて開発を行なって...
-
手書き文字認識のdll
-
WIN10で常にフォームを手前に
-
C++製DLLにてVB.NET関数を引数...
-
C# DLL エントリ ポイントが...
-
python エラー
-
エクセルのエラーメッセージ「4...
-
コンパイルできません。
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
eclipseでプログラムが実行でき...
-
Excelのエラーで困ってます。
-
C言語でヘッダファイルにグロー...
-
ASP.NET exeの作成方法
-
漢字のコメントをはずすとコン...
-
” OS ビルド ” の意味が分か...
-
ビープ音が鳴りません・・・
-
1 つ以上の複数回定義されてい...
-
Excel VBAのCSVファイルマージ...
-
すべてのリビルド: 0 正常、 0 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
visual studioの不要なDll削除方法
-
C# DLL エントリ ポイントが...
-
VB6.0(SP6)にて開発を行なって...
-
WIN10で常にフォームを手前に
-
VC++6.0 でのライブラリ参照方法
-
エクセル マクロで指定フォルダ...
-
res://ieframe.dll/について
-
VBAエディタのコード画面で、カ...
-
ASP.NETのDLL入れ替えについて
-
指定された引数が有効範囲にな...
-
dllをいじる。。
-
メイクファイルからdllを生成す...
-
手書き文字認識のdll
-
[VBA]64b版-行数表示.dllの登録...
-
VBにてIMEの入力モードを変える...
-
VB2003で レジストリを格納する
-
VB.NET xdoc2txtをつかってPDF...
-
コマンドラインで商用利用可能...
-
wavからmp3に変換する方法
-
ファイルをvbaで圧縮したいので...
おすすめ情報