dağıtımı için c piton çağırma ++ programı

oy
29

Ben benim c ++ programdan piton komut dosyalarını çağırmak istiyorum.

İnsanların benim piton yüklemiş olacak dağıtmak emin değilim.

Temelde ben bu dağıtım lisansı gibi Apaçi vardır kullanabileceğiniz bir .lib dosyasının arıyorum.

Oluştur 08/09/2008 saat 04:53
kaynak kullanıcı
Diğer dillerde...                            


6 cevaplar

oy
23

Boost size yardımcı olabilecek bir piton arayüz kütüphanesi bulunmaktadır.

Boost.Python

Cevap 08/09/2008 saat 05:01
kaynak kullanıcı

oy
2

Sizin C içine Python yorumlayıcısı embeding ++ uygulaması, uygulama çalıştırma Python komut dosyalarını kullanarak Python programları çalıştırmak izin verir. Aynı zamanda daha kolay mümkün olanlar komut uygulamanızda C ++ işlevleri çağırmak için yapacaktır. Bu ne istiyorsun o zaman önce de belirtildiği Boost kitaplığı daha kolay bağlantı oluşturmak yapmak istediğini olabilir. Geçmişte kullanmış SWIG C ++ koduna Python arayüzleri oluşturmak için. Python komut C ++ programını çağırmak ya da sadece Python aramak C ++ istediği olmadığını isteyip Bu sorunuza gelen belli değildi.

Python işlevlerin çoğu Python yorumlayıcısı yerleşik olmayan modülleri kullanın. Python komut bu işlevleri ararsanız o zaman kullanıcıların Python yüklemek veya uygulama ile piton çalışma zamanı dosyaları dahil olması gerekir ya. Bu Python komut içe modülleri ne bağlıdır.

Cevap 08/09/2008 saat 09:36
kaynak kullanıcı

oy
2

Boost, muhtemelen en iyi seçimdir daha tek başına, ve bu (bunlar Python yüklü olması olasılığı en az insanlar göz önüne alındığında mümkün görünüyor) Windows ile kullanım içindir, o zaman kullanabilirsiniz şey isteyen konum ancak eğer py2exe'yi için COM nesneleri için uygun giriş noktaları olan bir DLL oluşturmak. Daha sonra COM yoluyla kütüphane ile arayüzü yapabilirsiniz. (Açıkçası bu hiç bir platformlar arası çözeltisi olarak faydalı değildir).

Cevap 08/09/2008 saat 11:37
kaynak kullanıcı

oy
53

Ben benim c ++ programdan piton komut dosyalarını çağırmak istiyorum.

Bu, C ++ uygulamasında Python gömmek istediğiniz anlamına gelir. Bahsedildiği üzere bir başka Uygulamasında Gömme Python :

Gömme Python uzatmakla benzer, ama oldukça değildir. Fark Python uzatmak zaman Python katıştırıyorsanız, ana program Python ile ilgisi olabilir iken, uygulamanın ana program, hala Python yorumlayıcısı olmasıdır - bunun yerine, uygulamanın bazı parçalar bazen Python yorumlayıcısı çağrı bazı Python kodunu çalıştırmak için.

Ben öncelikle geçmesi öneririz başka Uygulamasında Gömme Python . Ardından aşağıdaki örnekler bakın

  1. C / C ++ içinde Python katıştırma: Part I

  2. C / C ++ içinde Python katıştırma: Bölüm II

  3. Çok Dişli C / C Python katıştırma ++ Uygulamaları

İsterseniz Boost.Python , aşağıdaki bağlantıları ziyaret edebilirsiniz:

  1. Boost.Python Bölüm 1 ile Python katıştırma
Cevap 30/11/2008 saat 05:52
kaynak kullanıcı

oy
2

İlginçtir, kimse söz etti pybind11 henüz. Onların belgelerden;

pybind11 temel olarak mevcut C ++ kod Python bağlarını oluşturmak için, Python ve tersi de C ++ türleri içeren bir hafif yalnızca üstbilgi kütüphanedir. derleme zamanı iç gözlem kullanılarak tip bilgi çıkarım yoluyla geleneksel uzatma modüllerde Demirbaş kodu aza indirmek için: Its hedefleri ve sözdizimi David Abrahams tarafından mükemmel Boost.Python kütüphaneye benzer. [...] kurulduğundan bu yana, bu kütüphane birçok ortak durumlarda önemli ölçüde daha basit bağlama kod yol açan birçok bakımdan Boost.Python ötesinde büyümüştür.

Somut olarak, bir Python fonksiyonu (denilen gömme) içine çağıran (alınan bu kadar basittir belgelere ):

#include <pybind11/embed.h> // everything needed for embedding
namespace py = pybind11;

int main() {
    py::scoped_interpreter guard{}; // start the interpreter and keep it alive
    py::print("Hello, World!"); // use the Python API
}
Cevap 15/11/2018 saat 17:46
kaynak kullanıcı

oy
0

C Bir Python komut dosyasını çalıştırmak için sistem çağrısı kullanın ++

#include<iostream>
#include <cstdlib>
using namespace std;
int main ()
{
int result = system("/usr/bin/python3 testGen1.py 1");
cout << result; 
}
Cevap 26/01/2019 saat 21:39
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more