간단하게 powershell 터미널 프로필을 설정하면된다

 

하지만 powershell 터미널은 새로 만들어주지 않으면 맨 처음엔 존재하지않는다.

 

그래서 프로필 파일을 새로 생성해주면됩니다.

 

1. anaconda를 통한 생성

anaconda를 설치해주고, anaconda powershell을 관리자 권한으로 실행합니다.

 

1-1. 이후 conda를 업데이트

conda update conda

 

1-2. conda를 통해서 powershell 프로필을 초기화

conda init powershell

 

그러면 사용자 폴더 내 Documents에 WindowsPowerShell이 생성됩니다.

 

해당 폴더에 아래와 같은 프로필 파일이 생성됩니다

 

1-3. 이제 프로필 파일의 코드가 실행되고, 프로필 상에서 현재 적용된 가상환경 이름이 뜹니다.

 

 

2. 프로필 꾸미기

1번 처럼 init을 통해서 생성되면, conda init 명령어에 의해 관리된다고합니다.

프로필을 꾸미고 싶다면 아래와 같은 powershell 문법을 이용하시면됩니다.

vscode에서 아래 코드를 적용하면, 환경변수가 하나만 나오는데

그냥 anaconda powershell을 실행하면, 환경변수랑 아래 코드가 둘 다 나옵니다 해결법은 모르겠슴다

function prompt {
	$conda_output = conda env list
	$active_env_line = ($conda_output | Where-Object { $_ -match '\*  ' }).Trim()
	$env_name = ($active_env_line -split '\s+', 3)[0]
	$env_path = ($active_env_line -split '\s+', 3)[2]
	if ($env_name) {
		Write-Host -NoNewline -ForegroundColor Green "($env_name)($env_path)"
		return "> "
	} else {
		return "> "
	}
}

 


해당 문제는 도서 "OpenCV 4로 배우는 컴퓨터 비전과 머신러닝"에서 솔루션 파일을 실행했을때 발생했습니다.

 

CV_VERSION 같은건 실행이 잘 되었는데, 이후에 Mat 같은 타입을 실행할때 주로 발생을 했는데,

 

추가 종속성에 추가적으로 lib를 설정해주면되었습니다.

 

visual studio 2022와 opencv 4.10.0(vc16) 버전을 사용합니다.

 

1. 프로젝트 속성 페이지 -> 구성 속성 -> VC++ 디렉터리

포함 디렉터리에 $(OPENCV_DIR)\include

라이브러리 디렉터리에 $(OPENCV_DIR)\x64\vc16\lib

라이브러리 디렉터리에서 vc00은 본인의 opencv 버전을 기입해야합니다

저는 최신 버전이기에 vc16을 입력했습니다

 

2. 다음으로는 프로젝트 속성 페이지 -> 구성 속성 -> 링커 -> 입력 -> 추가 종속성

에다가 opencv_world4100d.lib 를 추가하시면됩니다. 4100이라는 숫자는 본인의 opencv 버전에 따라 다른데 직접 opencv library 폴더로 가셔서 확인해보셔야합니다.

제 폴더 경로는 C:\opencv\build\x64\vc16\lib 과 같습니다.

경로로 가시면 위와 같이 lib 파일이 보이실텐데 d가 붙어있는것을 추가하는 것입니다.

d가 붙은것과 붙지않는것의 차이는 d가 붙는것은 디버거 용이고, 안붙으면 릴리즈 용입니다.

현재 솔루션 구성 방식이 디버그인지 릴리즈인지에 따라서 추가하시면됩니다.

 

그런데 이 방법은 매 솔루션 마다 숫자를 변경해줘야해서 되게 번거로운데
이렇게 하지마시고, 그냥 opencv 버전을 솔루션에 설정되어있는 버전으로 설치하시는걸 권장드립니다.

그럼 환경변수에서 bin 설정할때 vc 버전을 vc15로 수정하시면됩니다

 

'윤성우 열혈 TCP/IP 소켓프로그래밍' 도서를 따라하다 발생한 오류 이다

해당 오류는 'inet_addr' 함수를 사용할 때 발생하는 경고로, inet_addr은 문자열을 IP 주소를 처리하는 함수이다

해당 함수는 현재의 사용이 권장되지 않아서 발생한다.

 

해결 방법

1. inet_pton() 또는 InetPton() 함수를 사용

#include <WinSock2.h>
#include <Ws2tcpip.h>

// ...

const char* ipAddress = "127.0.0.1";
struct sockaddr_in sa;
if (inet_pton(AF_INET, ipAddress, &(sa.sin_addr)) != 1) {
    // 오류 처리
}

 

2. 이 경고를 무시하고 싶다면 _WINSOCK_DEPRECATED_NO_WARNINGS를 정의하여 비활성화

#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <WinSock2.h>
#include <Ws2tcpip.h>

// ...

 

+ Recent posts