2012-11-18 30 views
5

ile SQLite bağlayan. 'Etc.c.sqlite3' üstbilgisini ve sqlite3 birleşimini kullanıyorum. Ben VC++ ve MinGW-gcc hem denedim .lib dosyası oluşturmak için şu iki başarılı kaynak dosyasını derlemek - ama ikisi de (DMD, OMF ile çalışır kullanır optlink) COFF nesne biçimini oluşturur. 'Digitalmars.D' üzerindeki tonlarca yayını okuduktan sonra, birkaç farklı çözüm denedim. Statik statik başarılı olamadı sqlite3 ile bağlantı denedim DMD (Windows x86)

  • objconv:

    , GCC ile oluşturulan lib dosyasını dönüştürmek için çalıştı Böyle __divdi3 ve __muldi3 olarak tanımlanmamış sembolleri ile sonuçlandı, bu çözmek mümkün değildi.

  • Ayrıca * .obj için sqlite3.o dosyayı dönüştürmek ve sonra digitalmars 'LIB.EXE' kullanmak için bu denedi - Başarısız yanı

  • bir VC++ üzerinde objconv çalışılıyor oluşturulan lib çünkü başarısız: "SQLite'ı .Lib bir ithalat kütüphanesi" Ben sqlite.org dan derlenmiş DLL indirmek ve implib kullanırsanız

implib:

  • , bu al üretir olduğunu ib dosyası, ancak ad bozma ben statik kütüphane ile bağlantı olsa da, hala sembol _sqlite3_open, _sqlite3_errmsg, _sqlite3_close örneğin tanımlanmamış aynı sqlite hataları (almaları yüzünden, maç görünmüyor ...

coffimplib:

Ben VC++ oluşturulan kitaplık dosyası üzerinde coffimplib kullanırsanız
  • program sadece çöp içeren neredeyse boş dosya (~ 2KB) (hiç yani hiçbir semboller ve çoğunlukla sadece 'boş' değerleri) üretir.

  • Ben GCC oluşturulan kütüphane ile aynı yaparsanız, coffimplib "değil bir ithalat kütüphanesinde" şikayet ve hiçbir dönüştürülen kitaplık dosyası oluşturulur.

Ben Sqlite3 birleşmesi derlemeye DMC kullanırsanız

, derleme yaklaşık ton hatalardan şikayetçi başarısız. Yani burada, hiçbir yerde takıldım, bunun çözebileceği herhangi bir fikir veya ipucu var mı?

NOT: Bir DLL kullanmak istiyorum, ancak statik (yürütülebilir boyutu endişeleri için) sqlite ile bağlantı yoktur. /system anahtarı ile implib kullanılarak

+0

Eğer C derleyicisi ile ne hatalar alabilirim: Gerçekten statik kütüphanelerini gerekirse OMF bağlantı yapabiliyor ve COFF dosyaları birlikte Unilink, denemek olabilir? –

+0

Ton ve ton. Bunları düzeltmek için çok fazla şey gerektirecektir, her türlü hata ile (ör. Yasadışı döküm, bilinmeyen özdeş) –

+0

DMC'yi indirdim ve denedim; hatalar, DMC ile birlikte gönderilen Windows başlık dosyalarındaki hatalardan kaynaklanıyor gibi görünüyor. –

cevap

3

deneyin.

+0

Bu aslında hile yaptı! Bu bir statik kütüphane değil, bir içe aktarma kitaplığı oluşturmasına rağmen, çalıştırılabilir işlevlerin yalnızca 5'i kullandığında tüm sqlite dll'ye bağımlı olsa da, –

0

Neden sadece derlemek ve D uygulaması ile SQLite C kodu bağlantı yok? Galiba kütüphaneyle ilgili baş ağrılarından kurtulacaksın. dmd -of myproggy myproggy.d somefile.d libsqlite.lib

+0

Dmc, SQLite birleşimini derlemek (yorumlarıma bakın) başarısız olur. Ve eğer bağlantı kurmak istersem, nesnelerin OMF formatında olması gerekiyor ve bu benim sorunumun köküdür! –

1

Windows'ta Eğer DLL dosyaları ile daha iyiyiz: Elbette

iyi bir alternatif DMC ile SQLite statik kütüphane derlemek ve sadece yaparak Ge projesi ile kullanmaktır. Çok fazla baş ağrısı kurtarabilir.

X64 desteği üzerinde çalışmak, COFF + VC'nin linkerini kullanacağını düşünüyorum. Bu, beklenmedik durumu değiştirecektir.

Düzenleme: ftp://ftp.styx.cabel.net/pub/UniLink

+0

Evet, şu anda kullanmakta olduğum şey, ancak tüm kütüphaneler paylaşılanları desteklemiyor (örneğin dyncall) ve küçük çalıştırılabilir dosyalar üretirken (bağımlılıklara göre) uygulama boyutu atlıyor –

+0

yazım güncellendi – Trass3r

+0

İlgi çekici bir seçimdir. ! Kontrol edeceğim (sığ belgeler olsa da). COFF için x64 desteğinin ne zaman kullanılacağı konusunda bir fikrin var mı? –