본문 바로가기

전체 글319

C#에서도 inet_addr과 동일한 역할을 수행하는 함수 1. C# 표준 방식: IPAddress.Parse 또는 TryGetAddressWINAPI의 inet_addr은 "127.0.0.1" 같은 문자열을 32비트 정수(Big-endian)로 변환합니다. C#에서는 System.Net 네임스페이스의 IPAddress 클래스를 사용합니다.using System.Net;string ipString = "192.168.0.1";// 방법 1: Parse (형식이 틀리면 예외 발생)IPAddress ip = IPAddress.Parse(ipString);// 방법 2: TryParse (안전한 방법, 추천)if (IPAddress.TryParse(ipString, out IPAddress ipAddress)){ // 정수형 데이터가 필요할 경우 (Address.. 2026. 2. 4.
자녀와 거리 두기 요즘 임경미 작가의 "같은 말이라도 마음 다치지 않게" 라는 책을 여러번 듣고 있다.자차로 출퇴근을 하다 보니 오디오북과 친하게 되었다. 귀엽고, 장난기 많던 아이들이 어느덧 한명은 성년이 또 한명은 고등학생이 되었다.아이들을 키우면서 자립심이 강하고 자존감도 크게 하려고 나름대로는 노력했다.그런데 그런 나의 욕심이 아이들을 힘들게 했고 어린 나이에도 생각을 많이 하게 만든 것 같다. "같은 말이라도 마음 다치지 않게" 책을 읽으면서 내가 생각한 것들을 작가가 쓴 글에서 많이 발견하곤 했다. 나이 50이 되니 이만큼 산 사람들은 다 비슷한 경험을 하고 생각도 비슷한 것 같기도 하다.오늘은 책에 있는 챕터 중에 "우리 사이에 거리가 필요해" 라는 부분에 대해서 읽고 나의 생각을 정리해 보려고 한다.이 챕터.. 2026. 1. 27.
XDF0003 Microsoft.Windows.Shell 오류 발생 해결 방법 MSVS2019 버전에서 제작한 C# WPF로 제작한 프로젝트를 MSVS2026에서 열어 빌드를 했는데 아래와 같은 에러가 발생되었다. 파일이나 어셈블리 'Microsoft.Windows.Shell, Version=3.0.50506.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 지정된 파일을 찾을 수 없습니다. MSVS2026에서 열때 기존 .Net Framework 버전이 설치 되어 있지 않아서 .Net Framework 4.8로 자동 변경한 상태였다.XDG0003 오류는 Visual Studio의 XAML 디자이너나 빌드 프로세스가 참조된 어셈블리를 찾거나 로드할 수 없을 때.. 2026. 1. 23.
MAUI 프로젝트 MSVS2022에서 MSVS2026 마이그레이션 우선 단순히 MSVS2022 MAUI 프로젝트를 MSVS 2026에서 열어 빌드를 하면 에러가 발생한다.에러 내용은 Workload 문제인 것으로 보인다.따라서 Visual Studio 버전이 바뀌면 MAUI 워크로드도 다시 설정해야 합니다. 1. SDK 설치 여부 확인- '보기' - '터미널' 클릭 해서 '터미널' 창을 실행합니다.- "dotnet --list-sdks" 명령어를 입력해서 설치된 버전을 확인 합니다. 2. MAUI 워크로드 (Workload) 설치 상태 Visual Studio 버전이 바뀌면 MAUI 워크로드도 다시 설정해야 합니다.워크로드 확인: 터미널에서 "dotnet workload list"를 입력하여 설치된 목록을 확인합니다.워크로드 업데이트: "dotnet workload .. 2026. 1. 22.
MAUI 프로젝트에서 Windows 전용 네이티브 DLL 빌드 할 때 포함하도록 세팅 1. 솔루션 탐색기에서의 속성 설정가장 간단한 방법은 Visual Studio의 솔루션 탐색기에서 해당 DLL 파일을 우클릭하여 속성을 변경하는 것입니다.빌드 작업 (Build Action): 내용 (또는 Content)출력 디렉터리에 복사 (Copy to Output Directory): 새 버전이면 복사 (또는 항상 복사)이렇게 설정하면 빌드 시 bin\Debug\net8.0-windows10...\win-x64\ 폴더에 해당 DLL이 자동으로 복사됩니다.2. 프로젝트 파일(.csproj) 편집 (권장)플랫폼별로 경로를 명확히 제어하고 싶다면 .csproj 파일을 직접 수정하는 것이 더 확실합니다. Platforms\Windows 폴더 내의 파일들이 Windows 빌드 시에만 포함되도록 다음과 같은 .. 2026. 1. 16.
MAUI 안드로이드 앱에서 c++로 제작한 *.so 파일을 찾지 못하는 문제 c++ dll을 제작해서 윈도우에서 작동하는 것은 dll을 import 해서 정상적으로 작동하는 것까지 확인을 했다.따라서 DllImport를 사용하는 방식에서 문제가 발생할 것 같지는 않았다. 표준 C 라이브러리로 특별한 기능을 가지고 있는 것도 아니고 함수 하나를 호출해서 그 값을 가지고 오도록 했다. C++ 소스#include // memcpy 사용을 위해 추가extern "C" { /// /// [중요] visibility("default") 속성을 추가하여 외부(C#)에서 함수를 찾을 수 있게 함 /// __attribute__((visibility("default"))) void GetData(unsigned char* buffer, int len) { int copyLen = 8; .. 2026. 1. 15.
.NET MAUI Android 프로젝트에 .so 파일 포함 설정 가이드 .NET MAUI Android 프로젝트에 .so 파일 포함 설정 가이드Android 앱에서 C/C++로 작성된 라이브러리(.so)를 사용하려면, 지원하는 CPU 아키텍처(ABI)별로 폴더를 구분하여 위치시키고, **빌드 작업(Build Action)**을 올바르게 설정해야 합니다.1. 폴더 구조 생성 및 파일 배치Android는 기기마다 CPU 아키텍처가 다릅니다. 따라서 .so 파일도 각 아키텍처에 맞게 컴파일된 파일들을 각각의 폴더에 넣어야 합니다.Visual Studio의 **솔루션 탐색기(Solution Explorer)**에서 다음 경로에 폴더를 생성하고 파일을 복사하세요.경로: Platforms -> Android -> libs (폴더 생성)아키텍처별 하위 폴더:arm64-v8a (최신 안드.. 2026. 1. 14.
MSVS 2022에서 SO 파일 제작 방법 윈도우의 DLL(Dynamic Link Library)에 해당하는 것이 리눅스나 안드로이드에서는 SO(Shared Object) 파일입니다. Visual Studio(MSVS)는 훌륭한 크로스 플랫폼 개발 도구이기 때문에, 윈도우 환경에서도 안드로이드용 .so 파일을 직접 빌드할 수 있습니다.MAUI 안드로이드 앱 개발에 맞춰 Visual Studio 2022를 기준으로 .so 파일을 생성하는 과정을 단계별로 설명입니다.1단계: 필요 구성 요소(워크로드) 설치Visual Studio가 안드로이드용 C++ 코드를 빌드하려면 관련 도구가 설치되어 있어야 합니다.Visual Studio Installer를 실행합니다.현재 사용 중인 VS 2022의 [수정] 버튼을 클릭합니다."C++를 사용한 모바일 개발" (.. 2026. 1. 12.
MAUI 디컴파일 회피 검토 AI의 도움으로 아래와 같은 정보를 확인했다.나는 아래 방법 중에 안드로이드용 so 파일을 제작해서 사용하는 방법을 이용하려고 한다.기존에 C#으로 개발한 프로그램도 인증이나 Key 처리는 DLL을 제작해서 사용을 했기 때문이다.NET MAUI(Multi-platform App UI)로 개발된 안드로이드 앱(APK/AAB)도 C# 윈도우 프로그램과 마찬가지로 디컴파일이 가능하며, 소스 코드를 복원하는 것이 비교적 쉽습니다.특히 전력 제어 장치(Recloser 등)와 같은 중요 인프라를 다루는 소프트웨어에서 **하드코딩된 암호화 키(Key)**가 노출되는 것은 보안상 매우 치명적입니다. 제공해주신 문서 내용과 귀하의 개발 환경(C++, C#, MAUI)을 고려하여, 디컴파일 위험성과 암호화 키 보호 방안을.. 2026. 1. 12.