[C++ DLL] ํด๋์ค๋ฅผ MFC ํ์ฅ DLL๋ก ๋ง๋ค๊ณ ์ฌ์ฉํ๊ธฐ (์์ ํฌํจ)
๋ณธ๋ฌธ์ ์ฝ๊ธฐ ์ ์ ์๋์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ดํดํ๋๋ฐ ๋์์ด ๋ฉ๋๋ค.
[C++ DLL] C++ ํด๋์ค๋ฅผ DLL๋ก ๋ง๋ค๊ณ ์ฌ์ฉํ๊ธฐ (์์ ํฌํจ)
[C++ DLL] Visual Studio C++ ๋ช ์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ)
[C++ DLL] Visual Studio C++ ์์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ)
[C++ DLL] Visual Studio C++ DLL ์์ฑํ๊ธฐ (์์ ํฌํจ)
MFC ํ์ฅ DLL
MFC ํ์ฅ DLL์ MFC ํ๋ก์ ํธ์ MFC ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐ๋ ์ผ๋ฐ DLL์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. MFC ํ์ฅ DLL์ ์ฌ์ฉํ๋ฉด ํด๋์ค๋ฅผ ์ฝ๊ฒ DLL๋ก Export
ํ ์ ์๊ธฐ ๋๋ฌธ์, ํ๊ฒ ํ๋ก์ ํธ๊ฐ MFC๋ผ๋ฉด MFC ํ์ฅ DLL๋ก ๋ง๋๋ ๊ฒ๋ ์ฌ์ด ๋ฐฉ๋ฒ์
๋๋ค.
MFC ํ์ฅ DLL ๋ง๋ค๊ธฐ
ํ ๋ฒ ๋ฐ๋ผํด ๋ณผ๊น์? MFC ๋์ ์ฐ๊ฒฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ CreateDLL๋ก ์ง์ ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ MFC ํ์ฅ DLL์ ์ ํํฉ๋๋ค.
ํ๋ก์ ํธ์ ์ ํญ๋ชฉ์ ์ ํํ์ฌ MyDLL.h
์ MyDLL.cpp
๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ MyDLL.h
์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํฉ๋๋ค.
#pragma once
#include <string>
#include <iostream>
class AFX_EXT_CLASS Person {
public:
Person(std::string name, int age, std::string address);
void ShowInfo();
private:
int age;
std::string name;
std::string address;
};
์ฌ๊ธฐ์ ๊ธฐ์กด C++ DLL ์์ฑ๊ณผ ๋ค๋ฅธ ์ ์ AFX_EXT_CLASS
ํค์๋์
๋๋ค. ์ด ํค์๋๋ afxv_dll.h
์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ธ๋์ด ์์ต๋๋ค.
#ifndef AFX_EXT_DATA
#ifdef _AFXEXT
#define AFX_EXT_CLASS AFX_CLASS_EXPORT
#define AFX_EXT_API AFX_API_EXPORT
#define AFX_EXT_DATA AFX_DATA_EXPORT
#define AFX_EXT_DATADEF
#else
#define AFX_EXT_CLASS AFX_CLASS_IMPORT
#define AFX_EXT_API AFX_API_IMPORT
#define AFX_EXT_DATA AFX_DATA_IMPORT
#define AFX_EXT_DATADEF
#endif
#endif
ํ๋ฒ ๋ ๋ค์ด๊ฐ๋ฉด, AFX_CLASS_EXPORT
๋ afxver_h
์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ธ๋์ด ์์ต๋๋ค.
// for classes
#ifndef AFX_CLASS_EXPORT
#define AFX_CLASS_EXPORT __declspec(dllexport)
#endif
#ifndef AFX_CLASS_IMPORT
#define AFX_CLASS_IMPORT __declspec(dllimport)
#endif
์ฆ, AFX_EXT_CLASS
ํค์๋๋ __declspec(dllexport)
์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํฉ๋๋ค. ๋ค์ ์๋์ ์ฝ๋๋ฅผ ์ค๋ช
ํ๋ฉด, Person์ด๋ผ๋ ํด๋์ค๋ฅผ ํต์งธ๋ก Export
ํ๋ค๋ ์๋ฏธ์
๋๋ค.
class AFX_EXT_CLASS Person {
์ด์ MyDLL.cpp
์ฝ๋๋ฅผ ๋ณด๊ฒ ์ต๋๋ค. ์์ฃผ ๊ฐ๋จํ์ฃ ?
#include "pch.h"
#include "MyDLL.h"
Person::Person(std::string name, int age, std::string address) {
this->age = age;
this->name = name;
this->address = address;
}
void Person::ShowInfo() {
OutputDebugStringA(("์ด๋ฆ: " + name + "\n").c_str());
OutputDebugStringA(("๋์ด: " + std::to_string(age) + "\n").c_str());
OutputDebugStringA(("์ฃผ์: " + address + "\n").c_str());
}
๋น๋ ํ ์์ฑ๋ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
MFC ํ์ฅ DLL ์ฌ์ฉํ๊ธฐ
์ด์ ์์ฑ๋ DLL์ ์ฌ์ฉํด ๋ณด๊ฒ ์ต๋๋ค. ์๋ฃจ์ ์ ์ ํ๋ก์ ํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
MFC ์ฑ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ MainMFC๋ผ๊ณ ์ง์ ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ํ ์์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
MainMFCDlg.h์ ์๋์ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
// MainMFCDlg.h: ํค๋ ํ์ผ
//
#pragma once
#include "../CreateDLL/MyDLL.h" //dll header include
#pragma comment (lib, "../Debug/CreateDLL.lib") //dll lib ์
๋ ฅ
// CMainMFCDlg ๋ํ ์์
class CMainMFCDlg : public CDialogEx
๊ทธ๋ฆฌ๊ณ MainMFCDlg.cpp
์ OnInitDialog()
์ 7, 8๋ฒ์งธ ์ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ฌ์ค ์ถ๊ฐํ๋ ์์น๋ ์ด๋๋ ์๊ด ์์ต๋๋ค. ํธ์์ OnInitDialog()
์์ ํ๋ ๊ฒ์
๋๋ค.
BOOL CMainMFCDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
//...
Person person1("ํ๊ธธ๋", 35, "์์ธ์");
person1.ShowInfo();
return TRUE; // ํฌ์ปค์ค๋ฅผ ์ปจํธ๋กค์ ์ค์ ํ์ง ์์ผ๋ฉด TRUE๋ฅผ ๋ฐํํฉ๋๋ค.
}
์ด์ ๋น๋ํด ๋ด ๋๋ค. ์๋ฌด ์๋ฌ ์์ด ๋น๋๊ฐ ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์คํ ํ ์ถ๋ ฅ ์ฐฝ์ ๋ณด๋ฉด ์๋์ ๊ฐ์ด ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
์์ฃผ ๊ฐ๋จํ์ฃ ? MFC ํ์ฅ DLL์ ์ฌ์ฉํ๋ฉด ์์ฃผ ์ฝ๊ฒ ํด๋์ค๋ฅผ DLL๋ก Export
ํ ์ ์์ต๋๋ค.
'Programming > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] RAII(SBRM)๋ก ์์ ํ๊ฒ ๋ฆฌ์์ค ๊ด๋ฆฌํ๊ธฐ (0) | 2022.07.27 |
---|---|
[C++ DLL] C++ ํด๋์ค๋ฅผ DLL๋ก ๋ง๋ค๊ณ ์ฌ์ฉํ๊ธฐ (์์ ํฌํจ) (0) | 2020.12.13 |
[C++ DLL] Visual Studio C++ ๋ช ์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ) (2) | 2020.12.10 |
[C++ DLL] Visual Studio C++ ์์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ) (4) | 2020.12.07 |
[C++ DLL] Visual Studio C++ DLL ์์ฑํ๊ธฐ (์์ ํฌํจ) (4) | 2020.12.04 |
[C++ DLL] ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ดํด (0) | 2020.11.28 |
[C++] ํ๋ฌ๊ทธ์ธ ๊ตฌ์กฐ๋ก ํ๋ก๊ทธ๋จ ํ์ฅํ๊ธฐ (์์ ํฌํจ) (0) | 2020.10.25 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[C++] RAII(SBRM)๋ก ์์ ํ๊ฒ ๋ฆฌ์์ค ๊ด๋ฆฌํ๊ธฐ
[C++] RAII(SBRM)๋ก ์์ ํ๊ฒ ๋ฆฌ์์ค ๊ด๋ฆฌํ๊ธฐ
2022.07.27 -
[C++ DLL] C++ ํด๋์ค๋ฅผ DLL๋ก ๋ง๋ค๊ณ ์ฌ์ฉํ๊ธฐ (์์ ํฌํจ)
[C++ DLL] C++ ํด๋์ค๋ฅผ DLL๋ก ๋ง๋ค๊ณ ์ฌ์ฉํ๊ธฐ (์์ ํฌํจ)
2020.12.13 -
[C++ DLL] Visual Studio C++ ๋ช ์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ)
[C++ DLL] Visual Studio C++ ๋ช ์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ)
2020.12.10 -
[C++ DLL] Visual Studio C++ ์์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ)
[C++ DLL] Visual Studio C++ ์์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ)
2020.12.07