Не удается загрузить DLL, используя rundll32 из папки в PATH

У меня родная длл (bar.dll) это почти ничего не делает

Экспортирует одну функцию foo что открывается calc.exe,

И он делает то же самое на DLL_PROCESS_ATTACH,

я прочел Вот что когда-то все остальное терпит неудачу

Каталоги, перечисленные в переменной среды PATH

ищутся.

Я разместил bar.dll в папке, которая находится в PATH (и когда я использую where он успешно расположен).

Но когда я пытаюсь бежать

rundll32 bar.dll,foo

Это не с

Возникла проблема с запуском bar.dll

bar.dll не является приложением Win32.

(Я пытался скомпилировать его как 32-, так и 64-битную версию). Он работает, если я нахожусь в одном каталоге.

Исходный код

bar.cpp

#include "stdafx.h"#include "bar.h"#include <iostream>

BAR_API void __stdcall foo(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow)
{
system("calc");
}

bar.h

#ifdef BAR_EXPORTS
#define BAR_API __declspec(dllexport)
#else
#define BAR_API __declspec(dllimport)
#endif

#pragma comment(linker, "/EXPORT:foo=_foo@0")

extern "C" {
BAR_API void __stdcall foo(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow);
}

dllmain.cpp

#include "stdafx.h"#include "bar.h"#include <iostream>

BOOL APIENTRY DllMain( HMODULE hModule,
DWORD  ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]