2014-05-07 57 views
0

對於Windows上的C++,重要的是所有鏈接在一起的庫都使用相同的C++運行時庫進行編譯。這同樣適用於純C代碼嗎?Windows運行時庫依賴關係和純C代碼

更具體地說,我想爲許多不同的Visual Studio版本發佈SDK,包括靜態和動態。這個SDK與libpng鏈接,這是一個C項目(不是C++)。我還需要爲每個Visual Studio版本構建一個libpng二進制文件,還是運行時庫的C部分是相同的?

+0

這取決於具體的代碼。如果不同的模塊使用不同的C運行時實例,則需要檢查許多事項,例如釋放一塊內存的模塊總是與分配它的模塊相同;您不會嘗試跨模塊邊界發送C運行時流;你不在模塊邊界使用errno或其他全局變量;等等。 –

回答

-1

即使使用純C代碼,也不可能出現這樣的情況,即在一個模塊中用malloc分配的內存在另一個模塊中釋放。這不僅僅是使用相同版本庫的問題:爲了支持這種跨模塊內存操作,模塊必須使用庫的相同實例