2011-10-24 20 views
2

私は、UbuntuのintalledサーバでPython 2.6.5を使用しています。UbuntuでPythonでdllをインポートする

私はアプリケーションのためにAPIを統合する必要があります。その場合、私はAPIプロバイダによって私に与えられたDLLを使用する必要がありました。 APIの統合についてコードの彼らの例は、Visual Basicで書かれている...私は

OSError: /home//some.dll: invalid ELF header

...次のエラーの原因となった、Googleで検索をしたと​​を使用してのいくつかの例を発見した、と私は cdllpydllを使用してみてください(

一つの可能​​性は、IronPythonのを使用しているが、私は、それは完全に私のニーズを処理する場合はわからないので、私はIronPythonのについての多くの情報を持っていない...

は私のpythonでそのDLLを使用させ、利用可能なモジュールはありますかaynthing私はexixtingものから行方不明です)。私のpythonバージョンをアップグレードするのは難しいですか?

+1

私は何か不足している可能性がありますが、DLLはMicrosoftのエンティティのみであり、Linuxでは使用できません(ワイン以外は使用できません) –

答えて

3

DLLはWindowsの生き物です。 DLLを使用できる唯一の方法は、PythonのWindowsビルドを使用することです。 UbuntuでWindows Pythonを実行するには、virtual machineの中にWindowsがインストールされている必要があります。 Wineを使用して実行することもできます。

もちろん、APIプロバイダにLinuxバージョンのAPIがあるかどうかを確認することもできます。

+0

仮想マシンにWindowsをインストールし、 DL1を使用してPythonと通信するサービス – FallenAngel

+1

おはようございます。 UbuntuでWineの助けを借りて.dllを使用するjarを実行する方法はありますか?ありがとうございます –

3

DLLはWindowsの生き物かもしれませんが、DLLが「純粋な.NET」であり、Windows固有の実行可能ファイルを利用していない場合、Monoを通してLinuxで頻繁に動作します。 (モノipy.exe)。

Ironpythonのシステムと同様のWindowsモジュールは、テストされていない程度にカスタマイズされています。

私は正常にNHibernate、FluentNHibernate、log4net、およびその他のよく使われるいくつかのDLLをUbuntuで実行しました。

import clr 
import sys 
sys.path.append(os.path.abspath('./DLL')) #where your dlls are 
clr.AddReference('System') 
clr.AddReference('FluentNHibernate') 
from FluentNHibernate.Cfg.Db import PostgreSQLConfiguration 

キーは、この方法でDLLをインポートするように見えます。 dllが別のものをインポートした場合(nhibernateのfluentnhibernate imports)、Nhibernateをインポートする必要はありません。

+0

http://www.mono-project.com/docs/advanced/pinvoke/dllmap/ – karmakat

関連する問題