我目前正在編寫一個C#應用程序,它使用C++/CLI來利用C編寫的庫,它不是由我自己創建的。這個庫被編譯成一個DLL,然後在C++項目中引用,在C++包裝器中(我知道的很長時間)。使用DLL編譯使用不同的編譯器
這是問題所在;如果我使用MinGW將C庫編譯爲DLL(GCC makefile隨庫提供),那麼代碼將按照原樣工作,並生成正確的輸出(通過命令行進行測試)。但是,如果我將所有庫頭文件和源文件包含到Visual Studio中的C項目中,並使用MSVC編譯器進行編譯,那麼我會在庫代碼內部深入一個Read Access Violation
。
現在我可以(也可能應該)調試庫來找出問題的具體內容,但是它的編寫水平相當低,我沒有多少經驗;所以我的問題是,如果我使用MinGW將庫編譯爲DLL,然後在使用MSVC編譯的項目中引用該DLL,是否可以解決問題?
是不是[平臺調用](https://msdn.microsoft.com/en-us/library/aa288468(v = vs.71).aspx)在這種情況下更好? –
試試看看。 –
@VisualVincent我確實嘗試過使用PInvoke,但是我無法讓我的生活得到它的工作。所以我爲C代碼編寫了一個快速C++包裝器,並且C++/CLI幾乎立即工作。 –