0
我有寫在VC6的老DLL。我試圖讓這與.NET Winforms應用程序一起工作。我已經導入了DLL並調用它中的函數。這工作,我可以打破DLL看到一切都正確傳遞給它,但後來嘗試創建COM組件與CoCreateInstance DLL失敗。這種訪問衝突的錯誤。傳遞給它的MFC應用程序中使用的相同參數的DLL可以正常工作。
任何想法爲什麼這在.NET中但不在MFC中失敗?
我有寫在VC6的老DLL。我試圖讓這與.NET Winforms應用程序一起工作。我已經導入了DLL並調用它中的函數。這工作,我可以打破DLL看到一切都正確傳遞給它,但後來嘗試創建COM組件與CoCreateInstance DLL失敗。這種訪問衝突的錯誤。傳遞給它的MFC應用程序中使用的相同參數的DLL可以正常工作。
任何想法爲什麼這在.NET中但不在MFC中失敗?
COM組件可能需要單線程單元(STA),而.Net線程位於多線程單元(MTA)中。嘗試僅從特定的STA線程調用您的DLL。
如何在.NET中確保這一點? – Jonnster
我現在已經從它自己的線程調用了DLL。我在調用Start之前通過調用SetApartmentState將此線程設置爲STA。但是,它沒有任何區別。 – Jonnster