我想编写一个非常非常小的程序来解析启动参数并选择几个 DLL 中的一个来“启动”。
我已经编写了一个应用程序,我想将其作为 DLL “运行”,方法是将其编写为应用程序,然后更改 Visual Studio 项目属性以将其构建为 DLL。我知道我需要同时使用 LoadLibrary 和 GetProcAddress 来获得我想要的功能,但是我很难找到关于这方面的清晰和全面的文档,因为很多用例并不是真正的这种性质。另外,我必须根据项目和平台限制走这条路线。
我找到了这个页面,其中有一些信息,但不够清楚,我无法适应我的目的。
编辑:这就是我现在所处的位置。
我有一个 DLL 项目,其主要函数签名如下所示:
__declspec(dllexport) int cdecl main(int argc, char *argv[])
我还有一个应用程序项目,它尝试加载 DLL 并运行上述函数如下所示:
typedef int (CALLBACK* LPFNDLLFUNC1)(int, char *);
...
HMODULE dllHandle = NULL;
BOOL freeResult, runTimeLinkSuccess = FALSE;
LPFNDLLFUNC1 lpfnDllFunc1; // Function pointer
if (args->IsEmpty())
{
dllHandle = LoadLibrary(L"TrueApplication.dll");
if (NULL != dllHandle)
{
lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(dllHandle, "main");
if (lpfnDllFunc1)
{
int retVal = lpfnDllFunc1(0, "1");
}
目前,LoadLibrary 调用有效,但 GetProcAddress 无效。