Web'i ve StackOverflow'u çok aradım ancak şu sorularıma kesin bir yanıt bulamıyorum.Çapraz platform C++ kitaplıklarını Windows Phone 8 platformuna taşıma
Bağlam:
Ben Windows Phone 8 (WP8) platformuyla birlikte kullanılmak üzere limana C++ yardımcı kütüphanelerinin bir grup arıyorum. Tarihsel olarak, bu kütüphaneler statik libs (DLL yerine) olarak inşa edilmiştir.
WP8'e özgü kodu başarıyla yazdım, böylece kitaplıklar WP8 için kullanılabilir olan API'leri kullanarak (WP API QuickStart belgesini bir referans noktası olarak kullanarak) ARM uyumlu ve uyumludur. Kütüphanelerden sadece biri (örneğin, Lib1) WinRT'nin ThreadPool ile klasik Win32 Thread çağrılarını değiştirmek zorunda kalması nedeniyle WinRT uzantılarının (/ ZW bayrağı) tüketimini gerektirir.
Lib1'i kurarken, şu uyarıyı alırım: Uyarı 1 uyarı LNK4264:/ZW ile derlenmiş nesne arşiv dosyası statik kütüphaneye; Windows Çalışma Zamanı türlerini yazarken, Windows Çalışma Zamanı meta verilerini içeren statik bir kitaplıkla bağlantı kurmanız önerilmez. -
bu uyarı ararken, ben belirterek, this article bulundu: "Eğer toplu ref sınıfları, kamu arabirim sınıfları veya kamu değer sınıfları oluşturur statik kütüphane tüketmek ise bağlayıcı bu uyarıyı yükseltir güvenle yok sayabilirsiniz. Statik kütüphane, kütüphanenin kendisi dışında tüketilen Windows Runtime bileşenleri üretmiyorsa uyarı Statik kütüphanedeki genel bileşenler derlenecek, ancak çalışma zamanında aktive edilmeyecek.Kullanılacak diğer bileşenler veya uygulamalar tarafından tüketilmesi amaçlanan herhangi bir Windows Runtime bileşeni dinamik bağlantı kitaplığında (DLL) uygulanır. "
Lib1'de ClassA, WinRT ThreadPool çağrılarını kullanarak işlevleri içerir. ClassA işlevleri ClassB tarafından çağrılır ve sadece normal HANDLE'leri ve DWORD'leri ClassB'ye döndürürler.
Kod örnek:
// ClassA.cpp
HANDLE WINAPI ClassA::CreateThread(/* Params that are usually passed to Win32 CreateThread */)
{
// Do WinRTThreadPool stuff to create WorkItem
auto workItem = ref new Windows::System::Threading::WorkItemHandler([=](Windows::Foundation::IAsyncAction^)
// More code that eventually results in a Win32 Handle
return handle;
}
// ClassB.cpp
Handle handle = ClassA::CreateThread(/* Params that are usually passed to Win32 CreateThread */);
Classa fonksiyonları sadece hiç Lib1 içinden, ClassB tarafından çağrılır ve ClassB sonra Lib1 bağlayarak uygulama tarafından kullanılabilir.
Son olarak, benim sorulara:
Can statik kütüphanelerini olarak inşa zaman, , Windows Phone tarafından kullanılacak C++ değil WinRT uzantıları (/ ZW) tüketmek yapmak kütüphaneler 8 uygulamaları ?
o C++ kitaplığı (Lib1) tüketmek gelmez Can WinRT uzantıları statik lib olarak inşa edildiğinde, uyarıya rağmen, Windows Phone 8 uygulamalar tarafından kullanılacak (/ ZW)?
cevap hayır ya soru, ben, ilgili kütüphanesinde sınıfların tamamı için WinRT Bileşen sarmalayıcılarını oluşturmak zorunda kalacak this article gibi Mandelbrot Algoritma ile gösteriyor ise? Yoksa kayıp olduğum başka bir şey var mı?
Sağladığınız herhangi bir girdi için şimdiden teşekkür ederiz.