2012-11-20 89 views
3

我有一個使用VS2010構建的DLL(DLL A),使用MFC和其他使用VS2010構建的DLL。 我有另一個dll(DLL B),它是用VS2008構建的,並在VS2008中再次構建的應用程序上運行。 DLL A導入DLLB(帶有#import指令)並創建com對象。對象的創建本身會成功,但是應用程序會崩潰。我認爲它在顯示控件時崩潰(這些只是假設)。事情是我沒有應用程序的來源。 DLL A只是插件到該應用程序。 問題是,在做這樣的混合時有什麼需要考慮的嗎?它有可能嗎?可以使用VS2008使用DLL建的內置VS2010使用DLL

回答

1

是的,如果您使用C鏈接,即,則應該很好地調用跨越DLL邊界的代碼。如果DLL邊界使用像char *和int這樣的原始C類型。如果你通過DLL邊界傳遞C++引用/指針,你應該真的使用相同的編譯器標誌和相同的編譯器構建雙方。不能保證例如VS2010編譯器會以與VS2008編譯器完全相同的方式爲類對象佈局內存儘管如果使用相同的字節對齊標誌,佈局很可能是相同的,但不能保證它。

+0

進入/從DLL A出來的所有參數都是在DLL A中公開的com對象A –

+0

在這種情況下,由於您使用的是COM,所以dll邊界的每一邊不應該使用不同的編譯器。 – Dughall