2016-01-21 59 views

回答

0

此錯誤似乎發生在System.Win.Bluetooth中的TWinBluetoothSocket.Destroy例程期間。出於某種原因,儘管未使用藍牙,但在C++應用程序中調用了TWinBluetoothSocket析構函數。

問題是WSACleanup()被TWinBluetoothSocket析構函數調用,但WSAStartup()從未被調用,所以WSACleanup()返回一個錯誤。

在Mongo驅動程序用於C++應用程序時,即使TFDConnection在Delphi單元中,只要在設計或運行時選擇了Mongo驅動程序並將Connected設置爲true,就會發生這種情況。

沒有需要MongoDB服務器來重現此;只需在按鈕點擊處理程序中設置爲「已連接」即可。當然,因爲沒有MongoDB服務器會發生錯誤,但是當應用程序退出時會發生此錯誤。

的解決方法是把這個在構造函數(從https://msdn.microsoft.com/en-us/library/windows/desktop/ms742213(v=vs.85).aspx)現在

WORD wVersionRequested; 
WSADATA wsaData; 
int err; 
/* Use the MAKEWORD(lowbyte, highbyte) macro declared in Windef.h */ 
wVersionRequested = MAKEWORD(2, 2); 
err = WSAStartup(wVersionRequested, &wsaData); 
if (err != 0) 
    { 
    ShowMessage("err nonzero"); 
    } 

,調用WSAStartup()被調用,所以WSACleanup()不返回一個錯誤,並且應用程序可以關閉。