0
我正在研究一個項目,使C#與以前在C++中創建的DLL交互。下面 的代碼顯示了我怎麼導出我需要的功能:C++ dll不返回到C#
extern "C" __declspec(dllexport) int iterateAndTest(int testSize, char* testHash){
CUDADLL dll;
int ret = dll.iterateAndTest(testSize, testHash);
return ret;
}
下面的代碼顯示瞭如何申報在C#中的功能:
[DllImport("C:\\Users\\BrunoBraga\\Documents\\Visual Studio 2012\\Projects\\CUDADLL\\Debug\\CUDADLL.dll")]
public static extern int iterateAndTest(int testSize, string testHash);
的問題是:DLL函數沒有返回任何東西。實際上,dll曾經被調用過,從不返回到C#,程序只是結束。
我不確定我是否給出正確的代碼,但我想有一些關於我錯過的dll的東西。
對不起,延遲迴復。這是兩個問題: 1 - 當我創建對象時,我應該使用CUDADLL DLL的新insted。我以爲我可以做到這一點,因爲沒有新的我仍然能夠進入內部的領域。
2 - 程序應該在admin中運行,否則會出現一些崩潰;
再次感謝你們。
您是否測試了a)您是否真的進入了C++方法,並且傳入了正確的值並且b)從其他C++代碼調用時返回值? – ChrisF
如果它永遠不會返回它可能會死於託管/非託管代碼之間的轉換......這可能有幾個原因,如堆棧問題或存儲器處理等一些古怪等。 – Yahia
是的。爭論正在順利通過。我打印他們的計算beeing做得很好我檢查,但功能不返回:( – BrunoMCBraga