Error LNK2019 unresolved external symbol __imp__curl_global_init referenced in function _main
Error LNK2019 unresolved external symbol __imp__curl_easy_init referenced in function _main
Error LNK2019 unresolved external symbol __imp__curl_easy_setopt referenced in function _main
Error LNK2019 unresolved external symbol __imp__curl_easy_perform referenced in function _main
Error LNK2019 unresolved external symbol __imp__curl_easy_cleanup referenced in function _main

CURL 라이브러리 사용할 떄, 이런 에러가 뜨는 이유는

static으로 선언해서 사용하는 curl 라이브러리를 static으로 따로 명시하지 않았기 때문.

그러니까 다음 코드 추가하기

#define CURL_STATICLIB

#pragma comment (lib, "wldap32.lib")
#pragma comment (lib, "ws2_32.lib")

#ifdef _DEBUG
#pragma comment (lib, "libcurld.lib")
#else
#pragma comment (lib, "libcurl.lib")
#endif

 

 

+) 요게 더 편하당

https://blog.naver.com/PostView.nhn?blogId=tipsware&logNo=221663656260&parentCategoryNo=&categoryNo=50&viewDate=&isShowPopularPosts=false&from=postView

 

 프로젝트 > 속성 > C/C++ > 전처리기 > _CRT_SECURE_NO_WARNINGS 추가

 

 

1. Tools -> Options 

2. Debugging -> Symbols

3. Microsoft Symbol Servers 체크

 

도움받은 사이트 : https://shaeod.tistory.com/527

 

1. curl lib zip 파일을 다운로드 받는다.

 

홈페이지 우측 메뉴에 올드 릴리즈 들어가면 보이는 화면!

나는 구글링을 하면서 따라했던지라 최신 버전이 아니라 curl 7.65.1 버전을 다운받았다.

curl lib 다운로드 url : https://curl.se/download/

 

curl downloads

 

curl.se

 

2. curl lib zip 파일의 압축을 푼다.

경로를 다음으로 이동하면, curl_all.sln 파일이 있다. 더블클릭해서 열어주기

C:\다운로드한 경로\curl-7.65.1\projects\Windows\VC14
노란색 부분을 잘 체크해서 디버깅, 릴리즈 한번씩 해줬음! (static 선언)

 

3. 에러 없이 빌드에 잘 성공했다면, 이제 빌드한 lib 파일과 include 폴더를 옮겨줄것임!

1) 아래 경로에 들어가서 두 파일을 복사해서 맨 마지막 굵은 표시한 경로에 복사하기!

- C:\다운로드한 경로\curl-7.65.1\build\Win32\VC14\DLL Release에서 libcurl.lib

- C:\다운로드한 경로\curl-7.65.1\build\Win32\VC14\LIB Debug에서 libcurld.lib

- C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib

 

4. 이제 아래 경로의 include 폴더를 복사해서 굵은 표시의 경로에 붙여넣는다.

- C:\다운로드 경로\curl-7.65.1\include

- C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include

 

5. 끝!!! 마지막으로 curl에서 제공하는 테스트 code로 run 해보기~

#define CURL_STATICLIB

#include <stdio.h>
#include <curl/curl.h>

#pragma comment (lib, "wldap32.lib")
#pragma comment (lib, "ws2_32.lib")

#ifdef _DEBUG
#pragma comment (lib, "libcurld.lib")
#else
#pragma comment (lib, "libcurl.lib")
#endif

int main(void) {

	CURL *curl;
	CURLcode res;

	curl = curl_easy_init();
	if (curl) {
		curl_easy_setopt(curl, CURLOPT_URL, "google.com");
		/* example.com is redirected, so we tell libcurl to follow redirection */
		curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);

		/* Perform the request, res will get the return code */
		res = curl_easy_perform(curl);
		/* Check for errors */
		if (res != CURLE_OK)
			fprintf(stderr, "curl_easy_perform() failed: %s\n",
				curl_easy_strerror(res));

		/* always cleanup */
		curl_easy_cleanup(curl);
	}
	
	return 0;

}

 

 

1.

>> a = [1, 2 3]
a =
     1     2     3
>> b = [1 2 3; 4 5 6]
b =
     1     2     3
     4     5     6
>> b = [1 2 3; 4 5 6];
>> 
>> x = 1:6
x =
     1     2     3     4     5     6
>> x = [1:6]
x =
     1     2     3     4     5     6
>> x = 1 : pi/50
x =
  1×0 비어 있는 double 행 벡터
>> x = 1 : pi/50 : pi
x =
  1 ~ 6번 열
    1.0000    1.0628    1.1257    1.1885    1.2513    1.3142
  7 ~ 12번 열
    1.3770    1.4398    1.5027    1.5655    1.6283    1.6912
  13 ~ 18번 열
    1.7540    1.8168    1.8796    1.9425    2.0053    2.0681
  19 ~ 24번 열
    2.1310    2.1938    2.2566    2.3195    2.3823    2.4451
  25 ~ 30번 열
    2.5080    2.5708    2.6336    2.6965    2.7593    2.8221
  31 ~ 35번 열
    2.8850    2.9478    3.0106    3.0735    3.1363
>> x = 0 : -2 : -5
x =
     0    -2    -4
>> % 0~10 까지 총 10개의 등차수열
>> %linspace(처음값, 끝깞, 총개수)
>> linpace(0, 10, 10)
'linpace'은(는) 인식할 수 없는 함수 또는 변수입니다. 
정정 제안:
>> linspace(0, 10, 10)
ans =
  1 ~ 6번 열
         0    1.1111    2.2222    3.3333    4.4444    5.5556
  7 ~ 10번 열
    6.6667    7.7778    8.8889   10.0000
>>

 

2.

>> b
b =
     1     2     3
     4     5     6
>> b'
ans =
     1     4
     2     5
     3     6
>> ans'
ans =
     1     2     3
     4     5     6
>> 
>> b1 = 1: 0.2 : 2
b1 =
    1.0000    1.2000    1.4000    1.6000    1.8000    2.0000
>> b2 = rand (5,4)
b2 =
    0.8147    0.0975    0.1576    0.1419
    0.9058    0.2785    0.9706    0.4218
    0.1270    0.5469    0.9572    0.9157
    0.9134    0.9575    0.4854    0.7922
    0.6324    0.9649    0.8003    0.9595
>> help rand
 rand - 균일하게 분포된 난수
    구간 (0,1)에 균일하게 분포된 난수 하나를 반환합니다.

    X = rand
    X = rand(n)
    X = rand(sz1,...,szN)
    X = rand(sz)

    X = rand(___,typename)
    X = rand(___,'like',p)

    X = rand(s,___)

    입력 인수
        n - 정사각 행렬의 크기
            정수 값
        sz1,...,szN - 각 차원의 크기(개별 인수)
            정수 값
        sz - 각 차원의 크기(행 벡터)
            정수 값
        typename - 생성할 데이터형(클래스)
            'double' (디폴트 값) | 'single'
        p - 생성할 배열의 프로토타입
            숫자형 배열
        s - 난수 스트림
            RandStream 객체

    예제를 엽니다.
        난수로 구성된 행렬
        지정된 구간 내의 난수
        정수형 난수
        복소수형 난수
        난수 생성기 재설정
        난수로 구성된 3차원 배열
        난수의 데이터형 지정
        기존 배열의 크기 복제
        기존 배열의 크기와 데이터형 복제

    See also randi, randn, rng, RandStream, sprand, sprandn, randperm

    R2006a 전에 추가됨
    rand에 대한 문서
    이름이 rand인 다른 함수

>> 
>> b3 = ones(3,4)
b3 =
     1     1     1     1
     1     1     1     1
     1     1     1     1
>> b4 = zeros(8,3)
b4 =
     0     0     0
     0     0     0
     0     0     0
     0     0     0
     0     0     0
     0     0     0
     0     0     0
     0     0     0
>> b5 = eye(3)
b5 =
     1     0     0
     0     1     0
     0     0     1
>> 
>> 
>>

 

3. empty array

- 초기화
- 엘리먼트 삭제

>> x = []

x =

     []

>> whos
  Name      Size            Bytes  Class     Attributes

  x         0x0                 0  double              

>> w
'w'은(는) 인식할 수 없는 함수 또는 변수입니다.
 
>> x

x =

     []

>> x = [ x , 3 ]

x =

     3

>> x = [ x , 3 ]

x =

     3     3

>> x = [ x , 3 ]

x =

     3     3     3

>> x = [ x , 3 ]

x =

     3     3     3     3

>> x = [ x , 3 ]

x =

     3     3     3     3     3

>> x = [ x , 3 ] % 기존에 x에 3을 붙여서 더 큰 행렬을 만들어라

x =

     3     3     3     3     3     3

>>

 

4. 2D array

>> a = rand (6,4)

a =

    0.8147    0.2785    0.9572    0.7922
    0.9058    0.5469    0.4854    0.9595
    0.1270    0.9575    0.8003    0.6557
    0.9134    0.9649    0.1419    0.0357
    0.6324    0.1576    0.4218    0.8491
    0.0975    0.9706    0.9157    0.9340

>> %():index
>> A(2,3)
'A'은(는) 인식할 수 없는 함수 또는 변수입니다.
 
정정 제안:
>> a(2,3)

ans =

    0.4854

>> %A(행,열):index
>> r = rand (10,1)

r =

    0.6787
    0.7577
    0.7431
    0.3922
    0.6555
    0.1712
    0.7060
    0.0318
    0.2769
    0.0462

>> r(3)

ans =

    0.7431

>> r(3,1)

ans =

    0.7431

>> r(1,3)
Index in position 2 exceeds array bounds. Index must not exceed 1.
 
>> r([3 4 5])

ans =

    0.7431
    0.3922
    0.6555

>> r([1 3 4 5 2])

ans =

    0.6787
    0.7431
    0.3922
    0.6555
    0.7577

>> r(3:5)

ans =

    0.7431
    0.3922
    0.6555

>> r

r =

    0.6787
    0.7577
    0.7431
    0.3922
    0.6555
    0.1712
    0.7060
    0.0318
    0.2769
    0.0462

>> r(4) = []

r =

    0.6787
    0.7577
    0.7431
    0.6555
    0.1712
    0.7060
    0.0318
    0.2769
    0.0462

>> r(0)
배열 인덱스는 양의 정수이거나 논리값이어야 합니다.
 
>> r

r =

    0.6787
    0.7577
    0.7431
    0.6555
    0.1712
    0.7060
    0.0318
    0.2769
    0.0462

>> length(e)
'e'은(는) 인식할 수 없는 함수 또는 변수입니다.
 
>> length(r)

ans =

     9

>> a

a =

    0.8147    0.2785    0.9572    0.7922
    0.9058    0.5469    0.4854    0.9595
    0.1270    0.9575    0.8003    0.6557
    0.9134    0.9649    0.1419    0.0357
    0.6324    0.1576    0.4218    0.8491
    0.0975    0.9706    0.9157    0.9340

>> size(a)

ans =

     6     4

>> [m,n] = size(a)

m =

     6


n =

     4

>> size(A,1)
'A'은(는) 인식할 수 없는 함수 또는 변수입니다.
 
정정 제안:
>> size(a,1)

ans =

     6

>> size(a, 3)

ans =

     1

>> a

a =

    0.8147    0.2785    0.9572    0.7922
    0.9058    0.5469    0.4854    0.9595
    0.1270    0.9575    0.8003    0.6557
    0.9134    0.9649    0.1419    0.0357
    0.6324    0.1576    0.4218    0.8491
    0.0975    0.9706    0.9157    0.9340

>> help size
 size - 배열 크기
    A의 각 차원 길이를 요소로 갖는 행 벡터를 반환합니다.

    sz = size(A)
    szdim = size(A,dim)
    szdim = size(A,dim1,dim2,…,dimN)
    [sz1,...,szN] = size(___)

    입력 인수
        A - 입력 배열
            스칼라 | 벡터 | 행렬 | 다차원 배열
        dim - 쿼리 차원
            양의 정수 스칼라 | 양의 정수 스칼라로 구성된 벡터
        dim1,dim2,…,dimN - 쿼리 차원 목록
            양의 정수 스칼라

    출력 인수
        sz - 배열 크기
            음이 아닌 정수로 이루어진 행 벡터
        szdim - 차원 길이
            음이 아닌 정수 스칼라 | 음이 아닌 정수 스칼라로 구성된 벡터
        sz1,...,szN - 개별적으로 나열되는 차원 길이
            음이 아닌 정수 스칼라

    예제를 엽니다.
        4차원 배열의 크기
        테이블의 크기
        개별 인수로 차원 길이 반환하기

    See also length, strlength, ndims, numel, height, width

    R2006a 전에 추가됨
    size에 대한 문서
    이름이 size인 다른 함수

>>

 

5. Array indexing

>> a

a =

    0.8147    0.2785    0.9572    0.7922
    0.9058    0.5469    0.4854    0.9595
    0.1270    0.9575    0.8003    0.6557
    0.9134    0.9649    0.1419    0.0357
    0.6324    0.1576    0.4218    0.8491
    0.0975    0.9706    0.9157    0.9340

>> a (2,3)

ans =

    0.4854

>> a (11)

ans =

    0.1576

>> a (11) % 11번째? column major

ans =

    0.1576

>> a

a =

    0.8147    0.2785    0.9572    0.7922
    0.9058    0.5469    0.4854    0.9595
    0.1270    0.9575    0.8003    0.6557
    0.9134    0.9649    0.1419    0.0357
    0.6324    0.1576    0.4218    0.8491
    0.0975    0.9706    0.9157    0.9340

>> a(2:3, 2:4)

ans =

    0.5469    0.4854    0.9595
    0.9575    0.8003    0.6557

>> a([1 3], [2 4])

ans =

    0.2785    0.7922
    0.9575    0.6557

>> a(1:end, 2)

ans =

    0.2785
    0.5469
    0.9575
    0.9649
    0.1576
    0.9706

>> a(:, 2)

ans =

    0.2785
    0.5469
    0.9575
    0.9649
    0.1576
    0.9706

>> A (2:3, :)
'A'은(는) 인식할 수 없는 함수 또는 변수입니다.
 
정정 제안:
>> a (2:3, :)

ans =

    0.9058    0.5469    0.4854    0.9595
    0.1270    0.9575    0.8003    0.6557

>> A = rand(3,4)

A =

    0.4456    0.7547    0.6551    0.4984
    0.6463    0.2760    0.1626    0.9597
    0.7094    0.6797    0.1190    0.3404

>> a = A(:)

a =

    0.4456
    0.6463
    0.7094
    0.7547
    0.2760
    0.6797
    0.6551
    0.1626
    0.1190
    0.4984
    0.9597
    0.3404

>> B = [4, 3]

B =

     4     3

>> clear B
>> B = zeros(4, 3)

B =

     0     0     0
     0     0     0
     0     0     0
     0     0     0

>> B(:) = b
'b'은(는) 인식할 수 없는 함수 또는 변수입니다.
 
정정 제안:
>> B(:) = a;
>> B(:) = B';
>> a

a =

    0.4456
    0.6463
    0.7094
    0.7547
    0.2760
    0.6797
    0.6551
    0.1626
    0.1190
    0.4984
    0.9597
    0.3404

>> B

B =

    0.4456    0.6797    0.9597
    0.2760    0.4984    0.7547
    0.1190    0.7094    0.1626
    0.6463    0.6551    0.3404

>>

 

6. Complex numbers

>> format compact
>> x1 = 3 + 5i
x1 =
   3.0000 + 5.0000i
>> x2 = 1-0.741j
x2 =
   1.0000 - 0.7410i
>> x1/x2
ans =
  -0.4551 + 4.6628i
>> whos x1
  Name      Size            Bytes  Class     Attributes

  x1        1x1                16  double    complex   

>> real(x1)
ans =
     3
>> imag(x2)
ans =
   -0.7410
>> abs(x2)
ans =
    1.2446
>> angle(x1)
ans =
    1.0304
>> angle(x1)*100/pi
ans =
   32.7979
>> m = abs(x1)
m =
    5.8310
>> phi = angle(x1)
phi =
    1.0304
>> m*exp(1j*phi)
ans =
   3.0000 + 5.0000i
>> x = rand(3,1) + 1j*rand(3,1)
x =
   0.1524 + 0.9961i
   0.8258 + 0.0782i
   0.5383 + 0.4427i
>> whos x
  Name      Size            Bytes  Class     Attributes

  x         3x1                48  double    complex   

>> x'
ans =
   0.1524 - 0.9961i   0.8258 - 0.0782i   0.5383 - 0.4427i
>> x.'
ans =
   0.1524 + 0.9961i   0.8258 + 0.0782i   0.5383 + 0.4427i
>>

 

 

* human language vs programming language
- h : vocabulary, grammar, listening, speaking
- p : command, syntax

* coding > link > complie > ~.exe
- C, Fortran : compiler Language
- Matlab, Python : interpreter Language

* Overwriting, reserved name

>> v = 1

v =

     1

>> v = [3,5]

v =

     3     5

>> pi

ans =

    3.1416

>> i

ans =

   0.0000 + 1.0000i

>> j

ans =

   0.0000 + 1.0000i

>> i = 4

i =

     4

>> j = 6

j =

     6

>> i

i =

     4

>> j

j =

     6

>>

 

* variable name

>> namelengthmax

ans =

    63

>> sin(pi)

ans =

   1.2246e-16

>> sin = 3.4

sin =

    3.4000

>> sin(pi)
배열 인덱스는 양의 정수이거나 논리값이어야 합니다.

'sin'은(는) 함수인 동시에 변수인 것 같습니다. 이를 의도하지 않았다면
'clear sin'을(를) 사용하여 변수 'sin'을(를) 작업 공간에서 제거하십시오.
 
>>

 

* meaning of ' = '

- ← assignment
- variable name (변수이름) = expression (수식)

>> k = 3

k =

     3

>> k

k =

     3

>> k = k + 1

k =

     4

>> k = k + 1

k =

     5

>> k = k + 1

k =

     6

>> k = k + 1

k =

     7

 

* ans : 변수가 주어지지 않았을 때

>> k + 1

ans =

     8

 

* clean command window : clc

 

* variable in memory (=workspace) : who, whos

>> who

사용자의 변수:

ans  i    j    k    sin  

>> whos
  Name      Size            Bytes  Class     Attributes

  ans       1x1                 8  double              
  i         1x1                 8  double              
  j         1x1                 8  double              
  k         1x1                 8  double              
  sin       1x1                 8  double              

>>

 

* imaginary number

>> i

i =

     4

>> 1i

ans =

   0.0000 + 1.0000i

>> 2j

ans =

   0.0000 + 2.0000i

>> 0.73j

ans =

   0.0000 + 0.7300i

>> 1*i

ans =

     4

>> k

k =

     7

>> 3k
 3k
  ↑
유효하지 않은 표현식입니다. 곱셈 연산자가 누락되었는지, 구분 기호가 누락되
었거나 짝이 맞지 않는지, 또는 기타 구문 오류가 있는지 확인하십시오. 행렬을
생성하려면 소괄호 대신에 대괄호를 사용하십시오.
 
정정 제안:
>> 3*k

ans =

    21

>>

 

* comment : %


* number representation
- 부동소수점 : 10의 n으로 표현 ex) 3,56*10^-3
- 고정소수점 : 수치 그대로 표현 ex) 0.00356

* floating point (no space anywhere)

>> a = 2.4e3

a =

        2400

>> b = 0.037e+02

b =

    3.7000

>> c = -21.4e-4

c =

   -0.0021

>>

 

* format

>> format long e
>> pi

ans =

     3.141592653589793e+00

>> format long g
>> pi

ans =

          3.14159265358979

>> help format
 format - 명령 창의 출력 표시 형식 설정
    명령 창의 출력 표시 형식을 style로 지정한 형식으로 변경합니다.

    format(style)

    fmt = format
    fmt = format(style)

    입력 인수
        style - 적용할 형식
            문자형 벡터 | string형 스칼라 | DisplayFormatOptions 객체

    출력 인수
        fmt - 현재 표시 형식
            DisplayFormatOptions 객체

    예제를 엽니다.
        긴(long) 형식
        16진수 형식
        짧은 형식 공학 표기법과 긴 형식 공학 표기법
        큰 데이터 범위 형식
        현재 형식 가져오기
        표시 형식을 저장한 후 복원하기

    See also DisplayFormatOptions, disp, fprintf, formattedDisplayText

    R2006a 전에 추가됨
    format에 대한 문서

>> format
>> 1e-8

ans =

   1.0000e-08

>> 1e-2

ans =

    0.0100

>> format compact
>> k = k + 1
k =
     8
>>
>> format long e
>> 1 + 1e-15
ans =
     1.000000000000001e+00
>> 
>> 1 + 1e-16
ans =
     1
>> 1e100 + 1e84
ans =
    1.000000000000000e+100
>> realmax
ans =
    1.797693134862316e+308
>> realmin
ans =
    2.225073858507201e-308
>> 
>> 1/0
ans =
   Inf
>> 0/0
ans =
   NaN
>> %Not a Number = 값이 하나가 아니당
>> a = NaN
a =
   NaN
>> b = inf
b =
   Inf
>>

 

* 변수 지우기

- clear : 전체 변수 삭제

- clear 변수명 : 해당 변수 삭제

 

* help

- help + command/function

- lookfor '~' % '가 있으면 공백 포함

- doc 

 

 

1-2강.zip
6.38MB
3-4강.zip
1.61MB
5-7강(end).zip
3.58MB

 

python 기초 프로그래밍 과외 핸드아웃 + 참고자료 압축파일

 

+ Recent posts