VC는 dll을 자원에 통합합니다. (다른 파일도 마찬가지입니다.)
2608 단어 VC
g_MakeResourceFromExe DLL SYS ID IDR_DLL1 WinIo32.dll
ID IDR_SYS1 WinIo32.sys.ReleaseExe , ,
:
bool CtestDlg::g_MakeResourceFromExe(CString szExPathName, CString szResName, int nResID)
{
HRSRC hSrc = FindResource(NULL,MAKEINTRESOURCE(nResID),szResName);
if(hSrc == NULL) return false;
HGLOBAL hGlobal = LoadResource(NULL,hSrc);
if(hGlobal == NULL) return false;
LPVOID lp = LockResource(hGlobal);
DWORD dwSize = SizeofResource(NULL,hSrc);
CFile file;
if(file.Open(szExPathName,CFile::modeCreate|CFile::modeWrite))
{
file.Write(lp,dwSize);
file.Close();
}
FreeResource(hGlobal);
return true;
}
void CtestDlg::ReleaseDLL()
{// DLL WinIo32.dll ,ID=IDR_DLL1
CString rc_dll = _T("WinIo32.dll");
CString rc_sys = _T("WinIo32.sys");
CFileFind find;
if(!find.FindFile(rc_dll))
{
g_MakeResourceFromExe(rc_dll,_T("DLL"),IDR_DLL1);
// WinIo32.dll : , ,
DWORD dwAttributes = FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_ARCHIVE | FILE_ATTRIBUTE_READONLY;
SetFileAttributes(rc_dll,dwAttributes);
}
if(!find.FindFile(rc_sys))
{
g_MakeResourceFromExe(rc_sys,_T("SYS"),IDR_SYS1);
// WinIo32.dll : , ,
DWORD dwAttributes = FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_ARCHIVE | FILE_ATTRIBUTE_READONLY;
SetFileAttributes(rc_sys,dwAttributes);
}
find.Close();
}
WinIo32.dll. dll . :
typedef int (_stdcall *InitializeWinIoFun)();
InitializeWinIoFun InitializeWinIo = 0;
typedef int (_stdcall *GetPortValFun)(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);
//typedef int (__cdecl *MYPROC)(short int* , short int* , short );
GetPortValFun GetPortVal = 0;
typedef int (_stdcall *ShutdownWinIoFun)();
ShutdownWinIoFun ShutdownWinIo = 0;
HMODULE hDllInst = ::LoadLibrary(_T("WinIo32.dll"));
if (hDllInst)
{
InitializeWinIo = (InitializeWinIoFun)GetProcAddress(hDllInst, "InitializeWinIo");
GetPortVal = (GetPortValFun)GetProcAddress(hDllInst, "GetPortVal");
ShutdownWinIo = (ShutdownWinIoFun)GetProcAddress(hDllInst, "ShutdownWinIo");
}
int bResult = InitializeWinIo();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
VB에서 VC로 작성된 DLL을 호출하는 방법 공유이 두 가지가 있으면 VC를 사용하는 수조처럼 처리할 수 있습니다.도면을 내보내는 경우 WMF 또는 BMP 형식을 생성하여 VB를 호출할 수 있습니다.그러나 나는 VB가 창의 핸들 hWnd와 hDC, 그리고 창의 그...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.