여기 내 DLL 코드입니다, 실패 :GetProcAddress를() 오류 127
#include <Windows.h>
#include <iostream>
int sysLol(char *arg);
int sysLol(char *arg)
{
std::cout<<arg<<"\n";
return 1;
}
는 그리고 여기 내 응용 프로그램 코드입니다 :
그래서, 내 LIB.dll가 성공적으로LoadLibrary()
를 사용하여로드
#include <Windows.h>
#include <iostream>
#include <TlHelp32.h>
#include <stdlib.h>
typedef int (WINAPI* Lol)(char* argv);
struct PARAMETERS
{
DWORD Lol;
};
int main()
{
PARAMETERS testData;
HMODULE e = LoadLibrary(L"LIB.dll"); //This executes without problem
if (!e) std::cout<<"LOADLIBRARY: "<<GetLastError()<<"\n";
else std::cout<<"LOADLIBRARY: "<<e<<"\n";
testData.Lol = (DWORD)GetProcAddress(e,"sysLol"); //Error 127?
if (!testData.Lol) std::cout<<testData.Lol<<" "<<GetLastError()<<"\n";
else std::cout<<"MESSAGEBOX: "<<testData.Lol<<"\n";
std::cin.ignore();
return 1;
}
, 아직 GetProcAddress()
실패를 with 127. 이것은 내 함수 이름을 찾지 못해서 발생하는 것 같지만 왜 실패하는지 알 수 없습니다.
도움을 주시면 대단히 감사하겠습니다! :) ~ P
음을 참조하십시오, 이것은 프로세스 주사에 사용하기위한, 그래서로드 시간 링크는 나를 위해 옵션이 아닙니다. 실제 소스가 내가 게시 한 것보다 훨씬 복잡하기 때문에 호출 규칙이 일치하지 않으므로 위의 내용을 코드로 압축해야합니다. 빠른 입력 오류가 발생할 가능성이 있습니다. 지금까지 DWORD로 캐스팅하는 동안 프로세스 삽입은 32 비트 프로세스를 가리키고 32 비트 실행 파일로 컴파일되지만 결국에는 64 비트로 확장 할 계획이므로 팁을 주셔서 감사합니다 . :) – Phixle
괜찮습니다. 나는 내가 볼 수있는 것에 대답했다. 나는 아직도 당신의 질문에 대답했다고 생각합니다. –
물론! 그리고 물론 "고맙습니다"라고 함축되어 있습니다! :) – Phixle