如何解决DLL函数调用问题

时间:2010-10-06 12:25:04

标签: c++ qt dll qt4 pthreads

我有两个关于DLL的查询,

1)如果我在运行时加载DLL,我猜DLL会在单独的线程中吗?

2)如果我调用DLL中存在的函数,并且该函数需要很长时间才能返回该值,那么我如何让我的应用程序线程等到DLL的函数返回值。

我如何解决第二个问题

4 个答案:

答案 0 :(得分:7)

您的假设不正确。

如果加载DLL,然后调用其中一个函数,则会同步调用,就像任何其他函数调用一样。

绝对没有理由在另一个线程中加载DLL。当然,你可以这样做,但这不是默认的。

答案 1 :(得分:1)

1)不.dll只是代码。 dll中的代码在您创建的任何线程的上下文中调用。 *

2)因此,您的应用程序将等待dll的功能完成。

  • 由于应用程序调用dll,Dll可以创建工作线程。但是,您无法直接调用到线程中。您的代码所做的任何调用都将始终在当前线程上同步发生。

答案 2 :(得分:1)

您使用的是qt线程吗?否则我无法理解你为什么要使用“qt”标签。

至于你的问题,在我看来你必须创建另一个线程来调用DLL中包含的函数。 当该线程退出时,您可以假设您具有该函数的结果。

答案 3 :(得分:0)

  1. 您也可以切换工具DLL_THREAD_ATTACH
  2. 您必须从想要减速的线程调用此函数,或者在函数调用之前获取线程暂停,并在之后获得线程恢复。