起動引数を解析し、いくつかの DLL から "起動" する DLL の 1 つを選択する、非常に小さなプログラムを作成したいと考えています。
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 は機能しません。