나 gstdsexample.so
C++라이브러리입니다.
내부에,그것은 두 개의 세계는 변수가 공유하고 싶은 사이 라이브러리와 메인 프로그램입니다.
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int *ptr;
테스트합니다.
대본 1
sharedata.h
#ifndef __SHARE_DATA_H__
#define __SHARE_DATA_H__
#include <stdio.h>
#include <pthread.h>
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int *ptr;
#endif /* __SHARE_DATA_H__ */
함 sharedata.h
에 gstdsexample.cpp
고 main.c
.
컴파일 여부 확인을 얻을 구분하기 결함을 때 gstdsexample.cpp
기록 데이터 *ptr
.
시나리오 2
두 변수를 선언서
gstdsexamle.cpp
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int *ptr;
다음으로 선언 extern
에 main.c.
extern pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
extern int *ptr;
지금 내가 정의되지 않은 참조 오류를 두 변수를 컴파일하는 경우 main.c
.
시나리오 3:
#ifndef __SHARE_DATA_H__
#define __SHARE_DATA_H__
#include <stdio.h>
#include <pthread.h>
extern "C" {
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int *ptr;
}
#endif /* __SHARE_DATA_H__ */
다음을 포함 sharedata.h
에 gstdsexample.cpp
고 main.c
.
컴파일에 대한 cpp lib 괜찮습니다.
그러나 컴파일한니다.c 는 오류를로
error: expected identifier or ‘(’ before string constant
extern "C" {
^~~
deepstream_app_main.c: In function ‘all_bbox_generated’:
deepstream_app_main.c:98:24: error: ‘mutex’ undeclared (first use in this function); did you mean ‘GMutex’?
pthread_mutex_lock( &mutex );
^~~~~
GMutex
deepstream_app_main.c:98:24: note: each undeclared identifier is reported only once for each function it appears in
deepstream_app_main.c:101:21: error: ‘ptr’ undeclared (first use in this function); did you mean ‘puts’?
printf("%d ", *(ptr+x));
하는 방법을 공유 변수는 C++과 C 소스 파일이 있는가?