Main

개발/C++

3. c# string을 c++ DLL로 전달하는 방법

2023.01.31 - [개발/C++] - 1. VS 2019에서 C++ 프로젝트를 DLL로 빌드하기 2023.01.31 - [개발/C++] - 2. C++ DLL을 C#에서 이용하기 방법1. std::wstring 사용 C++ DLL 코드 #include extern "C" __declspec(dllexport) void FunctionName(const std::wstring& inputString) { std::wcout

개발/C++

2. C++ DLL을 C#에서 이용하기

2023.01.31 - [개발/C++] - 1. VS 2019에서 C++ 프로젝트를 DLL로 빌드하기 1. C++ DLL을 C#에서 사용하는 간단한 예제 C++ DLL(CPP.dll) #include extern "C" __declspec(dllexport) int AddNumbers(int a, int b) { return a + b; } C# using System; using System.Runtime.InteropServices;//import하지 않으면 DLLImport 사용 불가! namespace CSharpApp { class Program { [DllImport("CPP.dll")] public static extern int AddNumbers(int a, int b); static v..

개발/C++

1. VS 2019에서 C++ 프로젝트를 DLL로 빌드하기

방법 1 : 프로젝트 세팅부터 DLL로 선택해서 빌드하기 Visual Studio 2019에서 새 프로젝트를 생성 "Win32 Console Application" 프로젝트 템플릿을 선택 "Application Settings" 단계에서 "DLL"을 선택 프로젝트 속성에서 "C/C++" > "Code Generation" > "Runtime Library"를 "Multi-threaded DLL (/MD)"로 설정 프로젝트에 필요한 함수를 작성 "Build" > "Build Solution"을 선택하여 프로젝트를 빌드 빌드 결과인 dll 파일은 프로젝트 폴더의 "Debug" 또는 "Release" 폴더에 생성되는 것 확인 방법 2 : 이미 개발한 프로젝트를 DLL로 선택해서 빌드하기 프로젝트 속성 -> 일..

개발/C++

C++ 람다 함수 정리

❗이 글은 ChatGPT와의 질답을 통해 작성되었습니다. 개요 C++의 lambda는 익명 함수를 생성하는 방법 중 하나입니다. lambda 표현식은 함수의 헤더와 바디를 한 줄에 작성할 수 있어 간결한 코드를 작성할 수 있습니다. lambda 표현식은 기본 형식이 ->리턴타입 {함수 본문} 입니다. 이때, 인자리스트나 리턴타입은 생략 가능합니다. C++의 lambda 함수의 []는 capture list라고 불리며, 함수 바디 내부에서 참조할 수 있는 외부 변수를 정의합니다. [] : 아무런 변수도 캡처하지 않습니다. [x, &y]: x라는 이름의 변수를 값으로 캡처하고 y라는 이름의 변수를 참조로 캡처합니다. [&] : 외부 모든 변수를 참조로 캡처합니다. [=]: 외부 모든 변수를 값으로 캡처합니다..

개발/C++

C++20 신규 기능 정리

❗이 글은 ChatGPT와의 질답을 통해 작성되었습니다. C++ 20은 여러 가지 새로운 기능을 추가하였습니다. 그 중에서는 다음과 같은 기능들이 있습니다: Concepts: 템플릿 인수의 유효성을 컴파일 타임에 검사할 수 있는 기능. Concepts는 템플릿 함수나 템플릿 클래스의 인수들이 원하는 조건(concept)을 만족하는지 컴파일 타임에 검사할 수 있는 기능입니다. 이를 통해서 템플릿 함수나 클래스를 사용할 때 오류를 최대한 빨리 확인 할 수 있게 됩니다. 예를 들어, 아래의 함수 add()는 두 개의 값을 더하는 함수 입니다. template auto add(T a, U b) { return a + b; } 이 함수를 사용할 때 T, U 타입은 어떤 타입이든 가능하지만, 타입 T는 덧셈 연산이..

개인/라이프로그

3D 그래픽스 개발자의 2022년 회고

더보기 2021년 회고 글 : 바로가기 1. 이직 작년 하반기부터 준비한 이직을 올해 2월 마무리지었다. 유저에게 딜리버리가 가능한 서비스를 개발/운영하고있는 회사를 최우선적으로 고려했고 좋은 회사에 랜딩하게 되었다. 이직하고 10개월간 회사가 매출도 꽤 발생했고, 서비스의 퀄리티가 꽤나 상승하게 되었는데 이 과정에 조금이나마 도움이된 것 같아서 기분이 좋았다. 그리고 하반기부터는 팀장으로 매니지먼트를 겸하게되었는데 팀원들과 합을 맞춰가는 과정에서 개인적으로 많이 성장했음을 느끼고있다. 마이너 도메인(건축)으로 이직을 했다보니 서비스와 코드의 히스토리를 이해하기에 많은 어려움이 있었다. 이전 직장은 그나마 석박때 연구한 부분과 어느정도 일치했지만, 건축은 정말 새로 배우는 분야였다. 그렇기에 도메인 이해..

개발/C++

Boost Geometry 자주 사용하는 함수 정리 1편

boost::geometry::within 입력한 두 geometry의 포함 여부를 계산하는 함수 geometry1이 geometry2에 포함되는지 검사 return boolean template bool within(Geometry1 const & geometry1, Geometry2 const & geometry2) point_t point1; boost::geometry::model::polygon poly1; const auto& _isWithIn = boost::geometry::within(point1, poly1); ----> ok const auto& _isWithIn = boost::geometry::within(poly1, point1); ----> fail boost::geometry..

개발/C++

std::unordered_map 정렬하기

std::unordered_map map보다 더 빠른 탐색을 위한 자료구조 해쉬테이블로 구현한 자료구조 O(1)의 시간복잡도를 가짐 Map의 경우 O(log n)의 시간복잡도를 가짐 #include 을 선언하면 사용 가능 std::pair으로 구성되며 key가 유사한 데이터가 많으면 성능이 떨어짐 unordered_map 정렬하기 각 Value로 정렬한 후 출력을 진행하는 간단한 로직 #include #include void main() { std::unordered_map _map; _map.insert({"a",1}); _map.insert({"b",4}); _map.insert({"c",3}); _map.insert({"d",2}); //use vector for sorting std::vector..

njsung
'분류 전체보기' 카테고리의 글 목록 (3 Page)