LNK2019 unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)"

 

원인 : 프로젝트에서 메인 함수를 찾지 못함! 

 

내가 생성한 프로젝트 dir

 

HW__SouceCode.c / EX__SouceCode.c 소스코드

main 이라는 이름을 가진 함수가 없음

 

해결방법 : Properties > Linker > system > SubSystem > delete Contents

빨간색 영억 삭제

 

 

 

VS ERROR LNK2019 : _main 외부 기호(참조 위치: "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 함수)에서 확인

 프로그램을 잘 작성하다보면, 위와 같은 문제가 발생합니다.  위 오류의 경우, 프로그램의 진입점(일반적으로 main 함수)을 링커가 찾지 못했기 때문입니다. 자세한 내용은 [코드] 부분의 LNK2019

pang2h.tistory.com

 

행벡터 열벡터 너무 오랜만이당 다신 안볼줄 알았는데... 아쉽...

 

 

tt02.m
0.00MB

 

1. 튜토리얼 02 - 행렬과 배열

 

(1) 행렬과 배열 생성

>> 입력

% tutorial_02.m

%-------------------------------------------------------
% 행렬과 배열 생성

% 행렬 생성
a = [1 2 3 4];              % 1행 4열 << 행벡터
b = [1 2 3 4; 5 6 7 8];     % 2행 4열

% 함수를 이용한 행렬 생성
c = zeros(5,1);             % 5행 1열, 영행렬 << 열벡터
d = ones(3,3);              % 3행 3열, 1로 구성된 행렬
e = rand(2,3);              % 2행 3열, 숫자 랜덤 발생
f = randi(10,2,3);          % 2행 3열, 정수 랜덤 발생
                            % randi(최대정수,행,열)

% 그냥 출력은 disp()사용!!
% 행렬 출력
disp("행렬 'A'를 출력합니다."),disp(a);
disp("행렬 'B'를 출력합니다."),disp(b);
disp("행렬 'C'를 출력합니다."),disp(c);
disp("행렬 'D'를 출력합니다."),disp(d);
disp("행렬 'E'를 출력합니다."),disp(e);
disp("행렬 'F'를 출력합니다."),disp(f);

%-------------------------------------------------------

 

>> 출력

>> tt02
행렬 'A'를 출력합니다.
     1     2     3     4

행렬 'B'를 출력합니다.
     1     2     3     4
     5     6     7     8

행렬 'C'를 출력합니다.
     0
     0
     0
     0
     0

행렬 'D'를 출력합니다.
     1     1     1
     1     1     1
     1     1     1

행렬 'E'를 출력합니다.
    0.3371    0.7943    0.5285
    0.1622    0.3112    0.1656

행렬 'F'를 출력합니다.
     7     7     8
     3     7     5

 

(2) 행렬의 연산

>>입력

% 행렬의 연산

% 그냥 단순히 연산만 해버리면 컴퓨터에서 처리할 수 있는 범위를 벗어남
% 관련 에러
% Index exceeds the number of array elements. Index must not exceed 1036.

format long;

f_ad = f + 10;      % 행렬의 모든 값 + 10
f_sn = sin(f);      % 행렬의 모든 값을 sin 처리
f_tp = f';          % 전치행렬
f_inv = pinv(f);    % 의사역행렬 << 정방이 아니니까 의사역행렬 사용

% 행렬의 복소수 표현
% 실수부 + 허수부i/허수부j
g = [3+4i, 4+3j; -i, 10j];

% 행렬 출력
disp("행렬 f에 10을 추가합니다."),disp(f_ad);
disp("행렬 f를 sin 처리합니다."),disp(f_sn);
disp("행렬 f의 전치행렬"),disp(f_tp);
disp("행렬 f의 의사역행렬"),disp(f_inv);
disp("행렬의 복소수 표현"),disp(g);

disp("행렬 f는 정방행렬이 아니라서 역행렬처리 불가 !! ㅋㅋㅋㅋ ");

 

>> 출력

행렬 f에 10을 추가합니다.
    20    12    15
    15    13    16

행렬 f를 sin 처리합니다.
  -0.544021110889370   0.909297426825682  -0.958924274663138
  -0.958924274663138   0.141120008059867  -0.279415498198926

행렬 f의 전치행렬
    10     5
     2     3
     5     6

행렬 f의 의사역행렬
   0.165238678090575  -0.131578947368421
  -0.072215422276622   0.131578947368421
  -0.101591187270502   0.210526315789474

행렬의 복소수 표현
  1번 열

  3.000000000000000 + 4.000000000000000i
  0.000000000000000 - 1.000000000000000i

  2번 열

  4.000000000000000 + 3.000000000000000i
  0.000000000000000 +10.000000000000000i

행렬 f는 정방행렬이 아니라서 역행렬처리 불가 !! ㅋㅋㅋㅋ

 

 

의사역행렬 참조 : https://bskyvision.com/256

 

[선형대수학] 의사역행렬(Pseudo inverse)

기본적으로 역행렬은 행렬이 정방행렬일 때만 구할 수 있다. 따라서 행렬이 직사각형 행렬이면 역행렬을 구할 수 없다. 이때는 대신 의사역행렬이라는 것을 구한다. ▶ 의사역행렬(pseudo inverse)

bskyvision.com

 

'프로그래밍 > MATLAB' 카테고리의 다른 글

MATLAB : Array  (0) 2022.04.08
MATLAB : Introduction & Basics  (2) 2022.04.08
MATLAB : 설치 및 튜토리얼 01-데스크탑 기본 사항  (0) 2022.02.19

 

학교에서 MATLAB을 이용해서 과제를 주신다고 하시길래 간단하게 예습을 해보고자 한다.

-----------

 

 

1. MATLAB 설치

https://kr.mathworks.com/?s_tid=gn_logo 

 

MathWorks - MATLAB 및 Simulink 개발 회사

MathWorks Korea의 공식 홈페이지로서, MATLAB(매트랩) 및 Simulink(시뮬링크) 제품 및 서비스, 다운로드, 교육 및 강좌, 커뮤니티 등 다양한 정보를 제공합니다.

kr.mathworks.com

매트랩 홈페이지에 접속해서 트라이얼 버전을 다운받았다.

역시나 다운로드 받기까지 나의 여러 가지 개인 정보를 제공했..

MATLAB 실행파일을 받고 다운로드 할 때는 별 다른 설정이 필요하지 않으면 next next next next >>>>

 

설치 도중에 물어보는 MATLAB 추가 기능에 대해서는 나는 그냥 전체 선택하고 넘어갔음.

 

 

2.  MATLAB 실행 및 도움말 시작하기

MATLAB 실행화면

MATLAB 예습을 위해서 구글링을 하면서 도움이 될만한 포스팅이나 유튜브 강의를 찾아보았는데

유튜브 강의는 대학에서 강의용도로 제공하는 영상들이 대부분으로 있었음.

나는 그냥 쓰는 방법 정도만 익히고 싶기 때문에 강의까지는 너무 어렵고 초록색 부분의 시작하기를 눌러서

MATLAB에서 제공해주는 기본 튜토리얼을 성실하게 따라가 보려 함 ^^ 

 

시작하기를 누르니까 도움말 페이지가 떳음 ...

초록색으로 표시된 튜토리얼을 잘 따라가 보자.

 

3.  글씨 크기 바꾸기 + .m 파일 생성

1) 글씨 크기 바꾸깅

홈 &amp;gt; 환경 &amp;gt; 기본설정
기본설정 &amp;gt; 글꼴

도 있지만 그냥 crrl 누르고 마우스 휠 도르륵...

 

2) 파일 저장 및 명명 규칙

"ctrl+N"' 누르니까 스크립트창이 생겼고 커맨트창은 따로 있음. 파일을 저장하면  .m 으로 저장됨.

 

대충 01.m 으로 저장하려고 했는데 이런 알림 창이 뜸.

다른 언어도 파일을 생성할 때 이름을 규정하는데 제한이 있었는데 MATLAB도 그런가보다.

https://kr.mathworks.com/help/matlab/matlab_env/specify-file-names.html

 

파일 이름 지정하기 - MATLAB & Simulink - MathWorks 한국

다음 MATLAB 명령에 해당하는 링크를 클릭했습니다. 명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.

kr.mathworks.com

요건 파일 명명 규칙 관련된 가이드

 

 

4.  튜토리얼 01 - 테스크탑 기본 사항

 

tt01.m
0.00MB

 

>> 입력

% tutorial_01.m 
% 변수 설정 및 간단한 연산 ^^

% 변수 설정
% 변수명 = 값
a = 10;
b = 20;
c = a + b;

% % 출력
disp('A + B = '),disp(c);
disp(sprintf('A + B = %d ',c));
fprintf('A + B = %d \n',c);

% 함수 사용
d = sin(c);
e = cos(c);
f = tan(c);

% 함수 값을 문자로 변환 후 출력
fprintf('sin(A+B) = %d \n',d);
fprintf('cos(A+B) = %d \n',e);
fprintf('tan(A+B) = %d \n',f);

 

>>출력

>> tt01
A + B = 
    30

A + B = 30 
A + B = 30 
sin(A+B) = -9.880316e-01 
cos(A+B) = 1.542514e-01 
tan(A+B) = -6.405331e+00
>>

 

* 정리 *

- % : 한 줄 주석, 주석 단축키 ctrl+R

- 출력

1) disp('출력 할 문자열'); /// disp('출력'),disp('할')disp('문자열');  >> 구분자에 따라서 \n가 적용 됨.

2) disp(sprintf('출력 할 문자열 %d', 변수)); 

3) fprintf('출력 할 문자열 %d', 변수);  >> 한번에 처리해서 간편하지만, 한 줄 안바꿔주니까 필요시에 \n 표기 필수.

 

 

5. error + 궁금증

1) fprintf(변수명); 은 에러가 났음. 그냥 문자열 포함 없이 출력하고 싶을땐 어떻게 해야함?

2) 예전에 py로 데이터 활용하는 과제하다가 썻던 lib가 math 뭐시기였는데 기억이 안남

3) 참고 url

https://kr.mathworks.com/help/matlab/ref/run.html

https://blog.naver.com/PostView.nhn?blogId=smssky88&logNo=220278466794 

https://aigong.tistory.com/205

 

요건 sin, cos, tan 결과값 이해하려고......

https://seulcode.tistory.com/461

 

지수 표기법 (Exponential notaion) feat. vim: e+01, e-01

Exponential notation - 지수 표기법 feat. vim 지수 표기법은 많은 10의배수가 사용될 경우 모두 표시하기 어렵기 때문에 지수( e )를 사용하여 표기를 하는 방식이다. 가장 쉽게 vim에서 지수 표기를 해보

seulcode.tistory.com

 

 

 

'프로그래밍 > MATLAB' 카테고리의 다른 글

MATLAB : Array  (0) 2022.04.08
MATLAB : Introduction & Basics  (2) 2022.04.08
MATLAB : 튜토리얼 02 - 행렬과 배열  (0) 2022.02.21

 

점수 궁금한데

 

이전에 컴활 1급을 공부해본 경험이 있어서, 2급 공부하는데 문제 없었음.

특히나 실기를 공부하면서 1급 실기시험과의 차이를 실감할 수 있었음.

실제로 공부한 기간은 하루? 가 아니라 솔직히 적으면 4시간도 안되는 것 같음.....

 

 

* 공부 방법 (기록용)

1. 기출 문제 풀었음

2. 엑셀 함수 오답노트 만들어서 연습해봄

정다실버 ) 컴활 2급 실기 오답노트.pptx
0.31MB

(약간 이런 느낌으로 엮어서...)

 

 

* 자료 및 사이트

1. 컴퓨터 활용능력 실기시험 관련 블로그

m.blog.naver.com/PostList.nhn?blogId=won2520179

 

기풍쌤과 떠나는 컴퓨터 여행 : 네이버 블로그

안녕하세요 저와 함께 컴퓨터 자격증 여행을 시작해 볼까요

blog.naver.com

www.youtube.com/channel/UCC5fndmoxrdNHJG6XGdT4KQ

 

기풍쌤

기풍쌤과 떠나는 컴퓨터 자격증 취득 여행 컴활1급 필기실기 컴활2급 필기실기 그래픽 기능사 필기실기 포토샵,일러스트,오토캐드(건축) C언어,자바,파이썬과정과 COS Pro자격증 과정도 올려 놓으

www.youtube.com

ㅋㅋㅋㅋ 뭔가 광고같은 의도는 없었지만 공부하면서 많은 도움이 되어서 올림..

좀 돌아다녀 보니까, 이 블로그나 학원에서 도움을 받은 사람들이 기풍쌤한테 그날 본 시험 기출을 알려주고

그걸 엮어서 문제를 만드는 것 같았음. 이렇게 실기 대비해도 훌륭하다고 봄.

 

 

2. 기출 문제 자료

자료를 원래 .zip 파일로 묶어서 가지고 있긴 한데...

위 블로그에서 자료를 모두 받아온거라서, 그냥 올리긴 그렇고 비번 걸어서 올리겠음.

 

컴활 실기 2급 문제 모음.zip
2.80MB

 

 

 

 

 

거참 아슬아슬 하고만

 

 

* 공부 방법 (기록용)

1. 한 2시간 동안 요점 정리를 읽고 대충 이해하고 넘어감

2. 기출 문제 뺑뺑이

3. 시험 보는 날 틀린 것만 다시 뺑뺑이

 

* 자료 및 사이트

1. 도움되었던 사이트 CBT : www.comcbt.com/

자격증 공부할때마다 이용하는 것 같다. ㅎㅎ

저어기 노란색으로 표시한데에 아이디나 이름 같은걸 넣어서 내가 풀었던 문제나 오답들을 관리할 수 있다.

그럼 나중에 틀린것만 모아서 시험볼때 좋다.

 

 

 

2. 2020년도 컴퓨터활용 2급 필기 요약 자료

기출문제집_컴활2급핵심요약.pdf
7.72MB

 

 

 

Attended Robot과 Unattended Robot은 무인인점과, 아닌 점이 차이점.

 

방법은 작업 스케줄을 이용한다.

다른 방법들을 찾아봐도, forum이나 Stackoverflow 등등 에서도 다 똑같은 솔루션을 제시했다.

 

 

검색창에 '작업 스케줄러' 를 검색한 화면 !!

 

정말 그 작업 스케줄러일까? 했는데, 생각했던 그게 맞았다. (충격)

 

작업 스케줄러 메인 화면

 

작업 스케줄러를 실행하면 이런 화면이 나옴. 당황하지 말고 우측에 있는 [작업 만들기] 를 누름.

 

작업 만들기 화면

 

오케스트레이터를 사용해본 사람들은 대충 탭 이름만봐도 뭘 설정하는지 감이 옴 ㅎㅎ

트리거는 등록해놓을 작업을 어느 일시에 돌게 할 것인지 설정하는 탭일테고,

동작은 그 일시에 어떤 작업을 실행시킬지에 대한 탭일것이다.

나머지, 일반/조건/설정 탭에서는 동작시키려는 '작업'에 대한 권한 조정 등 세부적으로 조정할 수 있다.

 

먼저, 트리거를 들어가보자.

 

트리거 메인 화면

 

왼쪽 화면의 [새로 만들기] 버튼을 클릭하면 오른쪽 화면의 [새 트리거 만들기] 화면이 나온다.

오른쪽 [새 트리거 만들기] 에서 작업을 수행시키고자 하는 일시를 설정하여 저장하면, 왼쪽의 [트리거] 탭의 목록에 만들어진다.

 

 

이런식으로 다양하게 일자를 조정할 수 있다.

아래 사진처럼, 매월 단위에 일자별로도 선택해서 설정해줄수도 있다.

 

... 뭐, 그래서 일단 트리거는 이런식으로 설정하면, 시기에 맞춰 작업이 수행된다.

 

 

그럼 일시는 설정해두었다치고, 작업을 등록해서 사용해야하는 경우는 어떻게 해야할까?

[동작] 탭에 들어가서 설정해야한다.

동작 메인 화면

 

오호 이때부터 얼탔다. 뭐 어떻게 해야하는걸까 싶었는데, 사실 간단하다.

왼쪽의 화면에서 [새로 만들기] 버튼을 누르면 오른쪽 화면이 나온다.

[동작] 이라는 설정 옆에 드롭다운 형식으로 있는데, "프로그램 시작"은 말 그대로, 설정해둔 작업을 시작한다는 의미이다. (당연한 얘기를 당연하게 하는 이유는 역시 내가 친절보스이기 때문이다. ^^7)

 

중간에 보면, [프로그램/스크립트(p)] 라는 설정이 있는데, 보니까 파일을 등록하라고 한다.

여기에서는 2가지 방법이 있다. (나는 2가지만 알고 있기때문임)

1. .bat 파일 등록

2. Robot.exe 실행파일 등록 후 Main 파일 인수 설정

 

 

.bat 파일 생성 및 등록

 

* 배치 파일 : 명령 인터프리터에서 실행되게끔 코딩되어있는 파일

 배치 파일을 만드는 방법은 심플하다. 그냥 우리가 평소에 코딩할때랑 똑같이하면 됨.

 

메모장을 사용해도 괜찮고, 그냥 에디터 하나 켜서 코드를 넣고 빨간색 박스와 같이 .bat 확장자로 저장하면 된다.

배치 파일 내에 사용한 코드는 다 비슷하기 때문에 아주 잘 설명되어있는 아래 URL을 참고하자. ^^7

forum.uipath.com/t/bat/198585/5

 

Bat 파일 실행

안녕하세요 @smilepowers 님 제가 말씀드린 사항은 .xmal 파일은 스튜디오가 볼때 열리는 파일이고 로봇은 .nupkg 파일을 열어서 봇을 수행한다고 말씀드린건데 오해있으셨나봅니다. 저는 전달해주신

forum.uipath.com

 

저렇게 만들어진 .bat 파일을 등록하면 된다.

위의 참고글을 봐서 알겠지만, -file 인수까지 코딩해서 .bat 파일에 포함되기 때문에,

[새 동작 만들기] 에 인수나 추가적인 옵션을 입력하지 않아도 된다.

 

 

Robot.exe 실행파일 등록 후 Main 파일 인수 설정

 

이 방법은, UiPath Robot.exe 실행 파일을 등록하여

패키지로 추출한 Main 파일이나 Package를 인수로 설정하여 동작시키는 방법이다.

[작업 스케줄러] > [동작] > [새 동작 만들기]

 

위 사진에 있는 대로, Ui Robot.exe 실행 파일을 프로그램으로 등록한 후,

-file "살행하려는 .main 파일의 경로를 입력" 하면 된다.

 

프로그램 파일로 Ui Robot 을 등록하는 이유는

RPA를 실행하는 녀석은 Main.xaml이 아니라, UiProbot.exe 이기 때문이다.

Main.xaml은 그냥 RPA 스크립트일 뿐이고 실제 로봇이 동작하는것은 UiRobot이라는 것 !!

 

실제 입력해야하는 프로그램 경로나 인수에 대한 값 정보는 아래의 포스팅에 잘 기록되어있다.

 

참고 URL : charmingtree.tistory.com/5

 

[RPA/UIPATH] 윈도우 작업 스케줄러에 workflow 등록해서 원하는 시간에 자동 실행하기

윈도우에서 제공하는 "작업 스케줄러" 기능을 이용하여 uipath를 더욱 활용할 수 있는 방법을 포스팅 하겠습니다. 우선 "작업 스케줄러"에 등록할 자신만의 workflow를 준비해주세요. 저는 특정 시간

charmingtree.tistory.com

 

 

 

특수한 환경에서 개발해야하는 경우가 반드시 생긴다.

셀렉터도 안먹고, 그렇다고 해서 DT 스크래핑도, OCR도 정상적으로 돌아가는 것도 아니다.

다른 경우의 수가 다 먹히지 않는다면, Image를 이용해서 개발해야한다.

 

하지만, 예외 상황에 대한 경우의 수가 많아질 수 있고, 머신의 해상도나 배율이 개발PC 환경과 달라지면

............작동이 전혀 안될 수 있다................... ㅠㅠ ......................

그런 점을 유의해서 여러가지 상황에 대한 예외처리도 잘 하고 한다면 문제 없이 사용 할 수 있을 것 같다.

 

 

 

Image 관련 Activity

image 관련 activity

 

액티비티 이름만 봐도, 사용용도가 무엇인지, 어떻게 사용해야하는지 감이 오는.. ㅋㅋ

위 Image 관련 액티비티들을 보면 기존의 액티비티에서 사용하고 있는 것들이 많아서 사용용도는 똑같다고 보면 된다.

이러한 Image 액티비티를 사용하기 위해서는 속성 값을 잘 파악해두면 좋다.

 

 

Image Activity 속성

Image 액티비티와 관련 속성들

 

 

Image에 관련된 속성들을 보면 Input은 공통으로 가지고 있는 속성이다.

Image 액티비티에 있는 Input 공통 속성

 

속성 이름 설명
 Accuracy 이미지를 찾는데 정확성을 나타낸다.
속성 값의 범위는 0~1

1 로 작업할 경우, 잡아둔 이미지가 완전히 동일하지 않으면 인식하지 못한다 !!
기본값은 0.8이어서, 더 정확도를 높이고자 한다면 0.9 정도가 적당할 수 있다.
 Image 이미지 값을 설정하는 속성이다.
이미지 변수만 지원한다.
InArgument<Image>
 Profile ImageFindProfile.Basic
ImageFindProfile.Enhanced
이 속성에 대한 두가지 설정값이 있는데, Basic 은 기본 값으로 설정되어있다.

Basic을 사용하면 그냥 기본만큼 한다고 생각하면 되겠고,
Enhanced를 사용하면 리소스를 더 잡아먹으면서 디테일하게 잡는다..고...
UiPath Document에 나와있지만 써보면 그닥... 그냥 똑같던데 내가써서그런가

 

위의 속성값과 timeout 값을 잘 조절하다보면, 하나도 못잡던 것도 더 정확하고 빠르게 잡을 수 있게 된다.

예를 들어서, 정확도를 약간 높이면서 timeout 시간을 짧게 설정하고 retryscope를 돌리면서 말이다.

그러면 실행하는 동안에 여러번 수행을 하면서 보다 정확하게 에러가 나지 않고 잡을 수 있게 된다.

 

 

정해진 영역 내에서 Image 잡아오기

Indicate Scope on Screen 설정

 

저건 내가 잡아오려는 Image를 찾을 범위를 설정해준다.

최대한 이미지를 잘 잡을 수 있도록 범위를 설정해두고 그 안에서 찾는다면, 더 효과적으로 엘리먼트를 찾을 수 있다.

 

 

 

그래도.. 되도록이면 Image 안쓰는 방향으로...!

 

** 참조 URL

https://docs.uipath.com/activities/docs/ui-automation-ui-automation

 

+ Recent posts