У меня родная длл (bar.dll
) это почти ничего не делает
Экспортирует одну функцию foo
что открывается calc.exe
,
И он делает то же самое на DLL_PROCESS_ATTACH
,
я прочел Вот что когда-то все остальное терпит неудачу
Каталоги, перечисленные в переменной среды PATH
ищутся.
Я разместил bar.dll
в папке, которая находится в PATH (и когда я использую where
он успешно расположен).
Но когда я пытаюсь бежать
rundll32 bar.dll,foo
Это не с
Возникла проблема с запуском bar.dll
bar.dll не является приложением Win32.
(Я пытался скомпилировать его как 32-, так и 64-битную версию). Он работает, если я нахожусь в одном каталоге.
Исходный код
#include "stdafx.h"#include "bar.h"#include <iostream>
BAR_API void __stdcall foo(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow)
{
system("calc");
}
#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);
}
#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;
}
Задача ещё не решена.
Других решений пока нет …