C++ 클래스의 Gnutls 예제를 GnuTLS Doc에서 통합하려고합니다. g ++와 링크하는 동안 Unfortunatly 정의되지 않은 참조를 throw합니다. 그래서 나는 g ++로 변경하지 않고 (순수한 C 언어로) 예제를 컴파일하려고 시도했지만 성공하지는 못했다. gcc를 사용하면 작동합니다.C++ 프로젝트에서 C gnutls API를 사용하는 방법
[email protected]:~/Code/tlstests$ gcc tlsclient.c -lgnutls
/tmp/ccBqJdQr.o: In function `main':
tlsclient.c:(.text+0x3d0): undefined reference to `tcp_connect'
tlsclient.c:(.text+0x58d): undefined reference to `tcp_close'
collect2: ld returned 1 exit status
[email protected]:~/Code/tlstests$ g++ tlsclient.c -lgnutls
/tmp/ccRq5DcT.o: In function `load_keys()':
tlsclient.c:(.text+0x186): undefined reference to gnutls_pcert_import_x509_raw(gnutls_pcert_st*, gnutls_datum_t const*, gnutls_x509_crt_fmt_t, unsigned int)'
tlsclient.c:(.text+0x299): undefined reference to gnutls_privkey_init(gnutls_privkey_st**)'
tlsclient.c:(.text+0x2b5): undefined reference to `gnutls_privkey_import_x509(gnutls_privkey_st*, gnutls_x509_privkey_int*, unsigned int)'
/tmp/ccRq5DcT.o: In function `main':
tlsclient.c:(.text+0x37e): undefined reference to `gnutls_certificate_set_retrieve_function2(gnutls_certificate_credentials_st*, int (*)(gnutls_session_int*, gnutls_datum_t const*, int, gnutls_pk_algorithm_t const*, int, gnutls_pcert_st**, unsigned int*, gnutls_privkey_st**))'
tlsclient.c:(.text+0x3d6): undefined reference to `tcp_connect()'
tlsclient.c:(.text+0x594): undefined reference to `tcp_close(int)'
collect2: ld returned 1 exit status
gnutls/abstract.h에 선언 된 함수 만 C++ 컴파일러를 사용하여 정의되지 않은 것을 볼 수 있습니다. (tcp_connect() 및 tcp_close()에 대한 정의되지 않은 참조는 무시되고 extern으로 선언됩니다.)
나는 C++ 클래스 및 템플릿을 더 좋습니까? 그래서 나는 상상할 수 없다. 왜 나는이 오류들을 가지고 있느냐.
누구나 전에 이런 걸 봤어?
감사합니다, 그것은 :-) 작동 –