我 gstdsexample.so
C++图书馆。
内部,它有两个全球变量,我想分享一间图书馆和主要的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的来源的文件?