DLL 시작
7244 단어 dll
QMath.h
#pragma once
#ifdef API_EXPORT
#define DLL_CLASS __declspec(dllexport)
#define DLL_API extern "C" __declspec(dllexport)
#else
#define DLL_CLASS __declspec(dllimport)
#define DLL_API extern "C" __declspec(dllimport)
#endif
DLL_API int Add(int a, int b);
DLL_API int Sub(int a, int b);
class DLL_CLASS QMath
{
public:
int Add(int a, int b);
int Sub(int a, int b);
};
QMath.cpp
#include "StdAfx.h"
#define API_EXPORT
#include "QMath.h"
int Add(int a, int b)
{
return (a+b);
}
int Sub(int a, int b)
{
return (a-b);
}
int QMath::Add(int a, int b)
{
return (a+b);
}
int QMath::Sub(int a, int b)
{
return (a-b);
}
dllmain.cpp
#include "stdafx.h"
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
Test 테스트 프로젝트:
암시적 로드:
세 개의 파일이 필요합니다: *.h、*.lib、*.dll
//
#include "../DllTest/QMath.h"
#pragma comment(lib, "../Debug/DllTest.lib")
int _tmain(int argc, _TCHAR* argv[])
{
int nRet = Add(1, 2);
nRet = Sub(1, 2);
QMath m;
nRet = m.Add(1, 2);
nRet = m.Sub(1, 2);
return 0;
}
로드를 표시하려면 다음과 같이 하십시오.
필요한 파일: *.dll
//
typedef int (*ADD_PROC)(int a, int b);
typedef int (*SUB_PROC)(int a, int b);
int _tmain(int argc, _TCHAR* argv[])
{
HMODULE hModule = ::LoadLibrary(_T("../Debug/DllTest.dll"));
if ( NULL == hModule )
return 0;
ADD_PROC Add = (ADD_PROC)::GetProcAddress(hModule, "Add");
SUB_PROC Sub = (SUB_PROC)::GetProcAddress(hModule, "Sub");
int nRet = 0;
{
if ( Add )
nRet = Add(1, 2);
if ( Sub )
nRet = Sub(1, 2);
}
::FreeLibrary(hModule);
hModule = NULL;
return 1;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LoadLibrary에서 126 오류가 발생하면 원인이되는 파일 이름을 찾는 방법Loadlibrary에서 DLL을 동적으로 로드할 때 로드 실패입니다. 실패한 파일 이름은 알려주지 않습니다. 로드하고자 하는 DLL 자체를 로드할 수 없다면 이야기는 간단하지만, 대상 DLL이 다른 DLL을 로드하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.