我有一個我在C++中創建的包,並已將其編譯到共享庫中。如何讓python識別讀取預編譯的共享文件?
當我用自己的主函數鏈接它時,我可以通過直接調用初始化函數初始化包,initfoo和一切工作正常。
我如何得到蟒蛇承認我的共享庫作爲一個整體,這樣我就可以鍵入:從常規Python解釋器運行
import foo
?
我對使用distutils編譯文件不感興趣,因爲編譯必須是常規cmake編譯系統的一部分。我只需要創建加載共享庫所需的任何包文件。
更新: 我現在有它的工作。問題在於cmake默認爲共享庫名稱的lib前綴。爲了解決這個問題,需要
SET_TARGET_PROPERTIES(foo PROPERTIES PREFIX "")
,併爲Mac OS X
SET_TARGET_PROPERTIES(foo PROPERTIES SUFFIX ".so")
'distutils'具體存在是因爲它可以讓你自己做很大的麻煩(參見http://python-history.blogspot.com/2009/03/dynamically-loaded-modules.html) - 正在用' distutils'(可能兩次,如果它在cmake構建中也需要)完全沒有問題? – delnan
這是不可能的。我的命令調用了很多C++函數。另外,在Mac OS X上,生成的共享庫必須鏈接到所有其他共享庫。 – Juan