2010-10-06 74 views
1

我有幾個查詢的DLL,如何解決DLL函數調用問題

1)如果我在運行時加載DLL,我猜DLL會在單獨的線程中對嗎?如果我調用DLL中的一個函數,並且該函數需要很多時間來返回值,那麼如何讓我的應用程序線程等待直到DLL的函數返回值。

我該如何解決第二個問題

+1

標籤dll +標籤pthreads ??? – 2010-10-06 12:27:39

回答

7

你的假設是不正確的。

如果你加載一個DLL,然後調用它的一個函數,這個調用是同步進行的,就像其他的函數調用一樣。

DLL絕對沒有理由在另一個線程中加載。當然,你可以這樣做,但這不是默認設置。

0
  1. 你也可以在切換器DLL_THREAD_ATTACH
  2. 您必須從您想要減慢的線程調用此函數,或者在函數調用之前獲取線程掛起,以及之後獲得線程恢復。
1

1)不,該dll只是代碼。在你創建的任何線程的上下文中調用dll中的代碼。 *

2)因此,您的應用程序將等待dll的函數完成。

  • Dll可以創建工作線程作爲您的應用程序調用DLL的結果。但是,您不能將直接調用進入線程。您的代碼所做的任何調用將始終在當前線程上同步發生。
1

你使用的是qt線程嗎?否則我不明白爲什麼你會使用「qt」標籤。

至於你的問題,我覺得你必須創建另一個線程,它將調用DLL中包含的函數。 當此線程退出時,您可以認爲您具有函數的結果。

+0

是的,我正在使用Qt主題。但問題是我的應用程序線程沒有等待,直到它從DLL函數收到返回 – Naruto 2010-10-06 12:41:50

+0

你是什麼意思「我的應用程序線程沒有在等待?」如果Dll的函數派生一個線程,那麼也許你正在尋找「加入」調用來等待它... – Emiliano 2010-10-06 13:45:33