- ベストアンサー
C#からDLLを呼びたいのですが・・・
C#のASP.NET WebアプリケーションのDLLをC#のWindowsFormのexeで呼び出そうとしています。 すると 'System.EntryPointNotFoundException' のハンドルされていない例外が FTPApi.exe で発生しました。 追加情報 : DLL SampleApi.dll の GetURL というエントリ ポイントが見つかりません。 というエラーメッセージが表示されてしまいます。 クラス上部で [System.Runtime.InteropServices.DllImport("SampleApi.dll", EntryPoint="GetURL")] public static extern string GetURL(); と宣言した後、呼び出したい場所で、 strUrlPath = GetURL(); と呼んでいます。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
つっこみどころが色々あるのですが・・・ >private string GetURL() privateっていうのは以下参照 http://dobon.net/vb/dotnet/beginner/accessibilitylevel.html >C#のASP.NET WebアプリケーションのDLLを アセンブリについてと、Callの仕方の説明は http://www.gotdotnet.com/japan/student/column/moredotnet/moredotnet4.aspx >クラス上部で >[System.Runtime.InteropServices.DllImport >("SampleApi.dll", EntryPoint="GetURL")] アンマネージドとアンマネージドコードについて http://www.atmarkit.co.jp/fdotnet/special/dotnet_sdk/dotnetsdk08.html
その他の回答 (3)
- はなおか じった(@Jitta)
- ベストアンサー率42% (69/161)
こんにちは。 Privateなメンバを、そのクラス以外から参照することはできません。 DLLもC#で作ってあるなら、「参照」に加えればよろしい。このとき、元のソースのメソッドやクラスの宣言の直前の行に///と入力して、コメントを記入していれば、とっても幸せになれます。
お礼
真っ先に気がつきました・・・ ありがとうございます。
- asaichi
- ベストアンサー率21% (37/171)
私もこれから、C#をはじめるところです。 C#は、VC++の考えと完全に切離さないといけないと いけないと教えてもらいました。 その一つに「DLL」です。 C#では、DLLを直接呼び出してはいけないそうで、 このような場合は、別の方法でやらないといけないそ うです。 私もまだ初心者なので不明点が多いですが、 補足まで。
お礼
ありがとうございます。 そのようでした。 何とか解決できました。 私もまだまだ初心者で一つ一つに苦労しています。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>追加情報 : DLL SampleApi.dll の GetURL というエントリ ポイントが見つかりません。 無いんじゃないんですか?DLLの方にエントリポイントが。 どのようにDLL内の関数を公開されてるんですか? というか、クラスのメソッドとかいう話ではないんですか?
補足
DLLのほうには private string GetURL() { string strGetUrl = null; strGetUrl = Request.FilePath; return strGetUrl; } というメソッドがあります。 これを呼び出したいのですが、このメソッドを直接呼び出すということではないのですか?
お礼
ありがとうございます。 教えていただいたHPを参考にして呼び出せるようになりました。