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#
-
System.IO.Directory.GetFilesの順番
Visual Basic(VBA)
-
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
-
4
DLL参照時に指定されたモジュールが見つかりません。(HRESULT からの例外 0x8007007E) が発生してしまう。
C言語・C++・C#
-
5
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
6
C#において、同じインスタンスを何度もnewしてよいでしょうか。
その他(プログラミング・Web制作)
-
7
C#でstringをポインタとして渡す
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
res://ieframe.dll/について
-
VB6.0(SP6)にて開発を行なって...
-
エクセル マクロで指定フォルダ...
-
ベースアドレスの設定について
-
ulib.dllがみつかりません
-
コマンドラインで商用利用可能...
-
ファイルをvbaで圧縮したいので...
-
【COM】DLLからDLLをロードでき...
-
python エラー
-
エクセルのエラーメッセージ「4...
-
<unistd.h>をVisualStudioでつ...
-
適切な変換関数が存在しない???
-
VBAを何回も作り直して、容量が...
-
unsigned long long 型のフォー...
-
アプリケーションのDLLファイル...
-
ソフトの開発言語を調べる方法
-
Excelのエラーで困ってます。
-
すべてのリビルド: 0 正常、 0 ...
-
visual studio2019でデバッグが...
-
1 つ以上の複数回定義されてい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
visual studioの不要なDll削除方法
-
ファイルをvbaで圧縮したいので...
-
VB6.0(SP6)にて開発を行なって...
-
res://ieframe.dll/について
-
C# DLL エントリ ポイントが...
-
ASP.NETのDLL入れ替えについて
-
WIN10で常にフォームを手前に
-
VBAエディタのコード画面で、カ...
-
VB.NET xdoc2txtをつかってPDF...
-
VC++6.0 でのライブラリ参照方法
-
MFC7.0ランタイムライブラリ
-
指定された引数が有効範囲にな...
-
user32.dllがないためアプリが...
-
自作のDLLがみつからない
-
VBからIMEパッドを呼び出す方法...
-
dllをいじる。。
-
vb6で作成した画面が処理に時間...
-
M365にアップデートしてからコ...
-
[VBA]64b版-行数表示.dllの登録...
-
*.exeと異なるフォルダのDLLを...
おすすめ情報