Windows için kullanılan DLL'ler Linux'da kullanılabilirmi?

Başlatan z, 23 Mart 2016, 12:40:08

z

Windows işletim sisteminde çalışacak programlar için yazılmış DLL'ler Linux'de kullanılabilirmi?

Not: DLL'ler yalın kodlarla yazıldı ve herhangi bir kütüphane ya da donanım kullanmıyor. Sadece hesap kitap işleri yapıyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Jarvis

Herhangi bir dilde yazdığınız programın setupını oluşturduktan sonra Linux da mı çalıştırmak istiyorsunuz, yoksa programınızda işlem yapan .dll leri Linuxda yazdığınız programda mı kullanmak istiyorsunuz. Eğer ikincisi ise kullanamayacaksınız Linux daki kütüphaneler .so uzantılı biter. Linuxda ki IDE niz görmeyecektir.

kutahyaspor

dll yi kullanan exe'yi de siz kodluyorsanız wine kullanarak yüksek ihtimal çalıştırılabilir, denemek lazım. linux ortamında yazılan programlar dosyanızı kullanacaksa .so uzantılı dosya üretmeniz lazım.

http://wiki.ubuntu-tr.net/index.php?title=Linux_dosya_sistemi_hiyerar%C5%9Fisi

Tagli

Kodlar varsa, statik veya dinamik kütüphane olarak tekrar derlenmeleri en rahat çözüm olacaktır.
Gökçe Tağlıoğlu

Icarus

Alıntı yapılan: z - 23 Mart 2016, 12:40:08
Windows işletim sisteminde çalışacak programlar için yazılmış DLL'ler Linux'de kullanılabilirmi?

Not: DLL'ler yalın kodlarla yazıldı ve herhangi bir kütüphane ya da donanım kullanmıyor. Sadece hesap kitap işleri yapıyor.

Evet kullanılabilir. Fakat kodlarında hiçbir try-catch blok'u olmamalı
Linux bu kadar gelişti hala try-catch yapamıyor -1 yani ..

Tagli

Icarus, verdiğin bilginin dayanağı nedir? dll'ler dediğin şekilde kullanılır veya kullanılmaz orasını bilemeyeceğim ama "Linux try-catch yapamıyor" ifadesi gayet yanlış.
Gökçe Tağlıoğlu

Icarus

Tagli, Değil :) Muhtemelen sen C++'daki
try{
    throw Birşeyley;
}catch (Birşey e){
    cout << "Birşeylar olsa gerek";
}

İfadesinden bahsediyorsun, bu tamamen mantıksal(demek istediğim sistemden bağımsız dilin uydurduğu) bir olaydır.

Benim söylediğim ise eğer şöyle ifadeyi Window için özelleşmiş bir derleyicide yazarsan
int i=1,j=0;
__try{
i = i/j;
}__catch(...){
    cout << "Kutsal windows adına !";
}


Sihir meydana gelir :D :D, Linux'de yaparsan güzel bir sıfırma bölme sinyalin olur... Windows rocks... :P

z

Bu derleyici ile ilgili bir durum değilmi?

ARM işlemcilerde sıfıra bölme hatasını aktif edip etmemek bizim insiyatifimizde.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Icarus

Yok işletim sistemin bir özelliği bu. Olayın iç mekanizmasında windows'a has olaylar meydana geliyor.
Ama tabii ki derleyicide windows'un bu mekanizmalarını desteklemeli.

Tagli

Biraz karıştırınca bunu buldum:
http://stackoverflow.com/questions/13563688/divide-by-zero-exception-handling-in-linux
Anladığım kadarıyla 0'a bölme durumu Linux'ta SIGFPE yollanmasına sebep oluyor. Yani Linux'un bu konuda desteği var.

Burada örnek kod da var: https://rosettacode.org/wiki/Detect_division_by_zero#C.2B.2B

Öte yandan, 0'a bölme durumu C (ve sanırım C++) standartına göre tanımsız davranış. Yani derleyicilerin bu konuda bir sorumluluğu yok. Ama olay zaten donanımsal bir mesele, dil ile doğrudan ilgili değil.
Gökçe Tağlıoğlu

engerex

Soru biraz net değil. Windows için dll yazdın ancak derlemeyi nasıl yaptın?
Windows dll/exe dosyaları büyük ihtimal çalışacaktır. winamp çalışıyor diye hatırlıyorum. Kendisi 10-15 dil kullanır. Bir tek görselde sıkıntı vardı. Bir müzik çalar geliştiriyorsun ve wine ile çalışıyırdu. (delphi)
Eğer Windows için yazıp Linux için derleyeceksen eski kylix veya lazarus var.

Icarus

@Tagli: Hayır dediği linux'de signal'lerin olup olmaması değil. Division by zero problemi hiç değil. Sıfıra bölme sadece bir örnek. Signal ile orada windows'un yaptığı şeyi yapamazsınız zaten Wine'da tam beceremiyor. Olay donanımsal'da değil.
Orada windows sihri çok farklı bir durum. :)