我有一個靜態庫的問題。我需要在一個DLL中使用2個不同版本的相同SDK,而不會發生名稱衝突。我認爲解決方案是爲每個SDK版本創建2個靜態庫,然後將這些庫導入到DLL中。但這種解決方案的工作奇怪,我不知道爲什麼....靜態庫
簡化的情況是這樣的:
LIB1 - 有功能ADD1它使用的東西從SDK 1.0
LIB2 - 有功能ADD2從SDK 2.0
DLL-進口LIB1和LIB2使用的東西,有功能的添加(浮動版),調用ADD1或ADD2 - 取決於版本號參數
編譯過程是確定的,但DLL工程只有一個版本的SDK :(
當我調試它時,我看到該程序調用參數中的版本2.0與DLL添加函數。然後添加真的調用Add2 - 所以這仍然是正確的。但是,然後在Add2函數中,它使用SDK 1.0中定義的東西而不是SDK 2.0! LIB2實際上是使用SDK 2.0創建的。 (包括dirs和lib dirs被設置爲SDK 2.0)
那麼爲什麼它使用SDK 1.0? :(
是因爲連接的,當我從SDK 2.0 1.0倍率的符號創建SDK DLL和符號,其中加入都在一起......(有沒有不同的命名空間)。
你有什麼想法在哪裏的問題,有什麼解決辦法???
非常感謝!
我使用Visual C++ 2010 ...