私はctypesでいくつかの本当に奇妙な問題に遭遇しています。私はCのインターフェイスを持つC + +ライブラリにインターフェイスするためにctypesを使用しています。ライブラリには多くの並列機能があります。たいていの場合、並列呼び出しはC++層からのセグメンテーションで終わる傾向がありますが、私はシリアルコードで実行しています。 PythonインタプリタとC++コードを同じバージョンのC++コンパイラでコンパイルする必要があるかどうかに制限があるのだろうか?もしそうなら、どのようにC++がPythonをビルドするために使われたのかを知るにはどうすればいいですか?私はPython上で文字列を実行しようとしましたが、gccとg ++のgrepは何も表示されません。ctypes - PythonはCライブラリと同じバージョンでコンパイルする必要がありますか?
答えて
ctypesで呼び出すネイティブライブラリは、一致するランタイムでビルドする必要はありません。実際、ネイティブライブラリでもCランタイムを使用するという要件さえありません。
たとえば、ctypesを使用すると、他の言語で書かれたコードを呼び出すことができます。デルファイまたは、ctypesを使用してMSVCにリンクされていないWindows API関数を呼び出すこともできます。
私はあなたの問題を解決するために別の場所を探す必要がありますね!
OK、私はあなたにそれを信じなければならないと思います。ありがとう! – rokuingh
非常に異なるランタイムにリンクするmingwというDLLをビルドするだけで、簡単にテストできます。 –
CPythonにはC++コードが含まれていないため、CPythonプロセスにロードされたC++ライブラリをコンパイルするためのC++コンパイラに関する要件はありません。しかし、C層とC++ライブラリは、通常、同じC++コンパイラでコンパイルする必要があります。また、C++ライブラリまたはCレイヤーがlibpythonとリンクしている場合は、後でそのライブラリをロードするctypesコードを実行するために使用される同じバージョンのCPythonに対してコンパイルする必要があります。
- 1. フォームとデータベースのフィールド名は同じである必要がありますか?
- 2. PythonアプリケーションにCライブラリをバンドルする必要がありますか?
- 3. Subversionのクライアント/サーバのバージョンは同じであるか、お互いに近い必要がありますか?
- 4. asp.net mvc appsをあらかじめコンパイルする必要がありますか?
- 5. イメージはコンポーネントと同じフォルダに配置する必要がありますか?
- 6. 同じ/異なるインスタンスを複数のViewModelが同じドメインオブジェクトに要求する必要がありますか?
- 7. 友人機能は同じファイル内にある必要がありますか?
- 8. ctypesを使ってPythonでLuaを埋め込むライブラリはありますか?
- 9. DependencyObjectと同じスレッドでDependencySourceを作成する必要があります
- 10. Redisはディスクストレージと同じように扱う必要がありますか?
- 11. 同じプロセスで異なるバージョンのPythonライブラリを使用する
- 12. C++ランタイムを必要としないSQLite用のC#ライブラリはありますか?
- 13. ライブラリでモデルを使用する必要がありますか?
- 14. いつC言語でライブラリをリンクする必要がありますか?
- 15. Modernizrjs + YepNopejs + Requirejsを同じページで使用する必要がありますか?
- 16. 同じハードウェアでhadoopクラスタを実行する必要がありますか?
- 17. AS3ライブラリは厳密モードではなく標準モードでコンパイルする必要がありますか?
- 18. MATLAB:エラー:A(I)= Bで、BとIの要素数が同じである必要があります
- 19. .classファイルをバージョン管理する必要がありますか?
- 20. 同じコントロールを繰り返すコントロール/スタイルにする必要があります
- 21. のEclipseのバージョン私はダウンロードする必要があります。
- 22. 同じファイルを2回インポートする必要がありますか?
- 23. バンドル:毎回同じコマンドラインオプションを使用する必要がありますか?
- 24. Xcodeで何度もコンパイルする必要があります
- 25. 同じアルゴリズムの実装では、PythonとC++で異なる戻り値がありますか?
- 26. boost.signals2ライブラリをビルドする必要がありますか?
- 27. ブーストを必要としないコネクタ/ C++ライブラリはありますか?
- 28. ReferenceQueueで同期する必要がありますか?
- 29. C++ライブラリのAPIでサードパーティの型を公開する必要があります
- 30. 異なるバージョンのMSIファイルを同じ製品名にする必要があります
私はこれまでに似たような問題はありませんでした。 Pythonを構築するために使用されたコンパイラを見つける方法については、['sys.version'](http://docs.python.org/library/sys.html#sys.version)を見て、[' platform.python_compiler ) '](http://docs.python.org/library/platform.html#platform.python_compiler)、または単に' python'を実行してください。 –