exe dosyaları yerine dll dosyaları oluşturmak için py2exe veya başka bir yöntem kullanarak bir yolu var mı?py2exe?
Normal işlevlerle normal bir win32 dll oluşturmak istiyorum ancak bu işlevler C++ yerine python olarak kodlanacaktı.
exe dosyaları yerine dll dosyaları oluşturmak için py2exe veya başka bir yöntem kullanarak bir yolu var mı?py2exe?
Normal işlevlerle normal bir win32 dll oluşturmak istiyorum ancak bu işlevler C++ yerine python olarak kodlanacaktı.
Biraz hack yaparak bu çözebilir düşünüyorum:
Test edilmedi, fakat teorinin sağlam olduğunu düşünüyorum.
Esas olarak, dll'nizde py2exe'nin çıktı çalıştırıcısını ana() yeniden düzenlersiniz. o py2exe bir COM DLL oluşturmak mümkündür gibi
Bunu yapabilmem için py2exe
yapamıyorum, aslında Python kodunuzdan nesne simgelerini yapmıyor, ancak derlenmiş bir bayt kodunu Python yürütme süresine sahip bir yürütülebilir dosyada gömüyoruz).
Yerel kitaplık oluşturmak, Python-C API'siyle biraz daha fazla çalışma gerektirebilir (C/C++ arabirimini nesneler için tanımlayabilir). Bunun için Elmer'u kullanmak biraz daha kolay olabilir.
Bu py2exe, python yorumlayıcısını açan ve çalıştıran bir bootstrapping .exe sağlama etrafında yapılandırıldığı için bunu yapar.
Ancak neden sadece Python'u C koduna gömmeyin ve bu kodu bir DLL olarak derleyelim?
görünüyor: kuşaklar için
http://www.py2exe.org/index.cgi/Py2exeAndCtypesComDllServer
23 my_com_server_target = Target(
24 description = "my com server",
25 # use module name for ctypes.com dll server
26 modules = ["dir.my_com_server"],
27 # the following line embeds the typelib within the dll
28 other_resources = [("TYPELIB", 1, open(r"dir\my_com_server.tlb", "rb").read())],
29 # we only want the inproc (dll) server
30 create_exe = False
31 )
, başarıyla son zamanlarda kullanılabilir bir DLL oluşturmak için Elmer kullanmayı başardı. Siteleri has an example of building a DLL wrapper that loads python code. Bu oldukça iyidir çünkü hata ayıklama için DLL davranışını değiştirmek için python kodunu anında değiştirebilirsiniz.
Ne yazık ki, benim için, python yüklemeden çalışacak taşınabilir bir DLL istedim. Bu bölüm kutudan hiç çıkmamıştı. Tüm adımları tekrarlamak yerine, attığım adımlarla yanıtın bir bağlantısı: https://stackoverflow.com/a/24811840/3841168. python27.dll, elmer.dll ve .pyd bir çift ile birlikte .dll; Python27.dll genellikle statik olarak bağlı olmadığı için uygun bir .net runtime da gerekliydi. Dll's bir tekne yükü dahil etrafında bir yolu olabilir, ama ben çok fazla DLL dağıtma aldırmadım, bu yüzden çok fazla kazmadım.
py2exe, 1 kod çıkış yoluna sahiptir, ana(). Dışa aktarılan işlevleri/sınıfları sadece python koduyla belirtmenin bir yolu var mı? Benzer bir yardımcı program py2dll –
Hayır yaptığımız varsayalım. Ben bazı C yazmadan bunu yapabileceğini düşünmüyorum.Py2exe'yi her zamanki gibi çalıştırdığınızı düşünüyordum ve bunun kütüphane çıktılarını kullanmasına rağmen, py2exe'nin çalıştırılabilirlerine benzer bir şey yapan 'my_pymain' işlevini dışa aktaran kendi dll kodunuzu yazabilirsiniz. Bu kodu py2exe'den çalabilmelisiniz. – Macke