2017-04-27 5 views
2

C++からCライブラリに文字列値を渡す必要があります。 CppCallToCまたは.cppからの連絡方法はどうすればstruct rtmp_stream *stream;にアクセスできますか?C++のメソッドやアクセス構造体をCで実行する方法は?

C++ファイル:UI /ウィンドウ-基本main.cppに:

void OBSBasic::Load(const char *file) { 
    //From C++ how to go to the C method? 
    CppCallToC(); 
} 

Cファイル:プラグイン/ OBS-出力/ RTMP-stream.c:

static void CppCallToC() { 

    //https://github.com/jp9000/obs-studio/blob/master/libobs/util/dstr.h 
    //struct dstr  path, key; 
    struct rtmp_stream *stream; 
    //dstr_printf(&stream->path, obs_path); 
    //dstr_printf(&stream->key, obs_key); 
} 
+4

'std :: string'と参照は' c'ではありません。 – Alex

+2

1.異なる関数でローカル変数にアクセスすることはできません。 2.あなたはその機能をとにかく呼び出すことはできません。 3.これは[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のように見えます。 – molbdnilo

答えて

5

あなたの問題ではありませんCとC++の問題。 rtmp-stream.cのすべての関数は静的宣言されています。つまり、内部リンケージを持ち、別のコンパイル単位から呼び出すことはできません。これらの関数には、ファイルの最後に定義されたrtmp_output_info構造体を介して間接的にしかアクセスすることができず、obs-outputs.cで宣言されていますが、その宣言もそのファイル内でのみ使用できます。

私はOBS Studioについて何も知らないので、それ以上はお手伝いできません。私は恐れています。 obs_register_output(&rtmp_output_info)で起こることを追跡する必要があります。

関連する問題