私はMonodevelopを使用していて、Cで書かれた共有オブジェクトファイルを呼び出すC#メインプログラムを持っています。このソリューションは正常にビルドされますが、実行しようとすると上記のSystem.DllNotfoundExceptionと致命的な未処理例外同じ共有オブジェクトファイルSystem.DllNotFoundException - SOファイルをインポートするにはどうすればいいですか?
私は、次のを見てきました: - Calling UNIX and Linux \t shared object file \t .so from c# http://mono.1490590.n4.nabble.com/Adding-libraries-to-monodevelop-td1500573.html http://www.mono-project.com/docs/advanced/pinvoke/dllnotfoundexception/ http://www.mono-project.com/docs/advanced/pinvoke/
とSOここごとのファイルへのパスを設定します - 示し-vのldconfigの https://www.cyberciti.biz/faq/linux-setting-changing-library-path/
出力正しいフォルダーではなく、.SOファイルではありません。リンクの1つは、SOファイルの名前が何であるかは関係ありませんが、関連がある場合、私のものは「lib」で始まらないことを示唆しています。
このアプリケーションは以前から働いていましたが、買収したことで私はそれを解決しました。私はMonodevelopやLinuxプラットフォームのC#に精通していません。
プロジェクトは正常にビルドされますが、SOファイルが見つからないため実行されません。
また、SOファイルをMonodevelopのソリューションに組み込み、Build ActionオプションでEmbeddedResourceに設定しました。これが必要か正確かどうかは不明です。
C#コードは、呼び出し: -
[DllImport("xxxxxx.so")]
protected static extern Int32 xxxxxx_init();
、すべてSOファイル同じに関するいくつかのさらなる呼び出しがあります。
すべてのヘルプは感謝していつものように受信:) J
UPDATE 6月12日: - をだから、私は、ログファイルを見て、問題の全体のヒープを持っていました。 .SOファイルが見つかりませんでしたので、LDCONFIGを関連するディレクトリに更新しました。 012SOAP.SOファイルの検索に役立ちました。元の.SOファイルが32ビットで作成され、Monodevelopのバージョンが64ビットであったため、ロードされませんでした。
MonodevelopでC#コードをコンパイルして32ビットの実行ファイルを作成する方法はありますか、または共有オブジェクトファイルを64ビットバージョンに再コンパイルする必要はありますか?
私は1つがあった知らなかったが、興味深いことに、デバッグは、application.exe.soが見つからないことを知らせるれます。他にもSystem.Windows.Forms.dllのように見つからないということがたくさんありますが、これも.so(System.Windows.Forms.dll.so)として表示されていますが、参照ファイルの一部が表示されているようです正しく含まれていない。 – Jason
@ Jason私は、リンクされたMonoのドキュメントにそれに関する段落があったと信じています。 '.so'を探すための標準的な場所を含まないことに関するもの。あるいは '.dll' <->' .so'マッピングが壊れています。申し訳ありませんが、私はどこにいても遊びません(私はLinuxもMonoも持っていません) –
私は掘り出し物があり、設定が間違っているか間違っているかどうかを確認します。 – Jason