私は.NETコアの目的はクロスプラットフォーム開発のためだと理解していますが、私は後方互換性を探しています。私は(おそらく、レガシー)利用可能なLinuxライブラリを持っていると私はその機能をLinuxプラットフォームの.NETコアアプリケーションから呼び出すようにします。出来ますか?.NETコアからlinuxプラットフォーム上の共有ライブラリ(.so)を呼び出すことは可能ですか?
私はASP.NETコアについては言及していません、私はデスクトップアプリケーションのためにそれが必要です。
私は.NETコアの目的はクロスプラットフォーム開発のためだと理解していますが、私は後方互換性を探しています。私は(おそらく、レガシー)利用可能なLinuxライブラリを持っていると私はその機能をLinuxプラットフォームの.NETコアアプリケーションから呼び出すようにします。出来ますか?.NETコアからlinuxプラットフォーム上の共有ライブラリ(.so)を呼び出すことは可能ですか?
私はASP.NETコアについては言及していません、私はデスクトップアプリケーションのためにそれが必要です。
はい:https://github.com/dotnet/corefx/issues/343
言われていること、私は実際にはまだそれを試してみましたがないに認めますよ。私はにを持っています。これは単なる単価で、これは価値があります。そして、これについてのドキュメントを読む価値は間違いありません:http://www.mono-project.com/docs/advanced/pinvoke/ ... .netコアは同じアプローチを取っているようです(例:ファイル拡張子P-呼び出されたライブラリーのために、システムは)...右のバージョンなどへのリンクの世話をすることができるように
例:.NETコア自体のビットがこれを行う方法:
const string LIBC = "libc";
[DllImport(LIBC, EntryPoint = "getenv")]
private static extern IntPtr getenv_core(string name);
SWIGを見てください。これは、共有ライブラリをラップする簡単な方法であり、P/Invokeコードをすべて生成するだけでなく、.soライブラリとC#コードの間のヘッダファイル(think構造体)をマッピングします。 .soライブラリの周りに単純なcppラッパーを作成し、使用したいと思ってSWIGにその魔法をさせました。私たちは今、私たちのlinuxライブラリ関数を呼び出す.Netコード(単純なコンソールアプリケーション)から呼び出せるC#ライブラリを持っています。我々は、Ubuntu、CentOS、Debianを実行しているUNIXホスト上で、PIでこれを行っています。 http://www.swig.org/
.NET Core自体は、Linux上でこのようなライブラリをたくさん使用しています。そこにPInvokeを作る方法を見るためにソースコードを確認できますか? –
も参照:http://stackoverflow.com/questions/38202027/p-invoke-in-net-core-with-linux/38210267#38210267 –