从 C++ 如何执行 C 中的方法或访问结构?
Posted
技术标签:
【中文标题】从 C++ 如何执行 C 中的方法或访问结构?【英文标题】:From C++ how to execute a method or access struct which is in C? 【发布时间】:2017-04-27 07:48:23 【问题描述】:我需要将字符串值从 C++ 传递到 C 库。
你如何调用CppCallToC
或从.cpp 我如何访问struct rtmp_stream *stream;
?
C++ 文件:UI/window-basic-main.cpp:
void OBSBasic::Load(const char *file)
//From C++ how to go to the C method?
CppCallToC();
C 文件:plugin/obs-outputs/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);
【问题讨论】:
std::string
和引用不是 c
。
1.您不能在不同的函数中访问局部变量; 2. 无论如何你都不能调用那个函数——而且你不应该——因为它是静态的; 3. 这看起来像XY problem。
【参考方案1】:
您的问题不是 C 与 C++ 的问题。 rtmp-stream.c 中的所有函数都声明为静态的,这意味着它们具有内部链接并且不能从不同的编译单元调用。您只能通过在文件末尾定义并在 obs-outputs.c 中声明的 rtmp_output_info 结构间接访问这些函数,甚至该声明也只能在该文件中使用。
我对 OBS Studio 一无所知,所以恐怕无法帮助您。您必须追踪obs_register_output(&rtmp_output_info)
中发生的事情。
【讨论】:
以上是关于从 C++ 如何执行 C 中的方法或访问结构?的主要内容,如果未能解决你的问题,请参考以下文章