OSX

2015-02-24 30 views
5

'daki uyumsuz openCV ve libtiff kitaplıkları Pyramided tiff dosyasıyla çalışıyorum. Ancak, OpenCV, piramitli tiff dosyalarını desteklemiyor ve bu yüzden ihtiyacım olan katmanı/dizini/çözünürlüğü ayıklamak için libtiff 4.0.3 kullanmayı deniyorum ve daha sonra işleme için OpenCV'a iletiyorum.OSX

#include "tiffio.h" 
#include "opencv2/highgui/highgui.hpp" 

Ama bunu yaparken types_c.h aşağıdaki verir bana:

typedef int64_t int64; 
Typedef redefinition with different types ('int64_t(aka 'long long') vs 'long') 

O farklı 2 kütüphanelerin her tarafından int64_t tanımlanan ediliyor görünür şöyle

Ben sayılabilir.

ben hem kitaplıkları yüklemek için homebrew kullandık ve bu yüzden

vs., yani benim takımımda gelecekteki geliştiriciler için bir ağrı olma, güncellemeleri almak sorunlara neden olacağından bu kütüphaneleri düzenlemek zorunda tercih ediyorum Her iki kütüphaneyi de değiştirmeden kullanabileceğim bir yol var mı?

cevap

6

Her iki kitaplık da genel ad alanını tanımlarla (ve üçüncü taraf kitaplıklarında doğru ad alanlarına sahip olmanın ne kadar önemli olduğunu görürseniz) hem genel ad alanına hem de dahil etmenin bir yolu olmadığı için. Böyle bir kullanıcı tanımlı ad sarılı bunlardan birini içeren vardır:

emin değilim rağmen bu çözüm kullanıma elverişli olup olmadığını libtif kullanarak Libtiff üyelerini kullanmak zorunda kalacak, derleme sorunu çözecek
namespace libtiff { 
    #include "tiffio.h" 
} 
#include "opencv2/highgui/highgui.hpp" 

:: önek,

+0

Ad alanı içerebileceğini bilmiyordum, tam da aradığım şey bu. Libtif :: öneki harika değil, ancak alternatiflerden çok daha iyi, bu da ödeme yapmak için küçük bir bedel. Teşekkürler! –

+0

Sanırım, isimlerinden sonra 'namespace libtiff'i kullanarak;' int64 'türünü sonraki kodlarda kullanmadığınız sürece herhangi bir çakışma bulunamaz. – Thomas