【发布时间】:2012-06-07 12:13:36
【问题描述】:
所以我想创建一个包含应用程序的 Dll。我的代码:
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
StartApp();
break;
}
return TRUE;
}
还有 StartApp 功能:
void StartApp()
{
//some declartions
iPtr->Start();
}
问题是函数 Start() 在连续循环中运行(比如 while(true)),我认为这是导致 dll 永远不会中断并返回 true 的问题。我试图在不同的线程中运行它,但这不起作用。
所以我的问题是如何使用 dll?
如果 DllMain 没有完成并且不返回 TRUE 是否有问题?
【问题讨论】:
-
>> 我想创建一个包含应用程序的 Dll 通常需要一个 exe 来启动应用程序。 DLL 无法单独完成。那么,谁在加载这个 DLL?
-
@Unni 所以我想制作一个可以加载 dll 的 c++ 应用程序,而 dll 将加载另一个应用程序
-
你的意思是你的DLL会启动另一个.exe?那么 while(true) 循环的问题在哪里呢?启动exe后,StartApp()函数就退出了,对吧?
-
@Unni 所以我的主程序启动了这个 DLL(1)。 DLL(1) 应该调用位于 DLL(2) 中的函数。来自 DLL(2) 的函数具有 while(true) 循环。所以我的 DLL(1) 没有返回任何东西,因为 DLL(2) 函数永远不会完成。
-
@Thanatos 根据您的 cmets,我认为两个不同的应用程序,一个在 c++ 中,另一个在 c# 中,带有一些进程间通信是一个更可行的解决方案