bennetthardwick / rust-obs-plugins Goto Github PK
View Code? Open in Web Editor NEWA safe wrapper around the OBS API, useful for creating OBS sources, filters and effects.
License: GNU General Public License v2.0
A safe wrapper around the OBS API, useful for creating OBS sources, filters and effects.
License: GNU General Public License v2.0
According to this article, unwinding across FFI boundary is still a UB, which we'd better avoid.
Even though we can carefully examine our code to ensure that no unwrap
is there, accidents can still happen, turning a programming mistake into a live accident.
I followed the instructions using the example plugin but couldn't achieve a working result.
Clicking on the filters
list didn't yield the expected result. Indeed it simply wasn't there.
I'm on nixos, I've tested with /usr/lib/obs-plugins/
along with ~/.config/obs-studio/plugins/bin/
please advise.
I'm trying to write a plugin to render frames with nvfbc, but I can't figure out how to render frames with obs-wrapper.
I found VideoRenderSource
and VideoTickSource
, but I can't figure out how to actually render frames, GlobalContext
and VideoRenderContext
don't appear to have any fields or methods.
use obs_wrapper::{
obs_register_module,
obs_string,
prelude::*,
source::{
GetNameSource,
SourceContext,
SourceType,
Sourceable,
VideoRenderSource,
VideoTickSource,
},
};
struct NvidiaFrameBufferCaptureSource {
source: SourceContext,
}
struct NvidiaFrameBufferCaptureModule {
context: ModuleContext,
}
impl Sourceable for NvidiaFrameBufferCaptureSource {
fn get_id() -> ObsString {
obs_string!("nvfbc")
}
fn get_type() -> SourceType {
SourceType::INPUT
}
fn create(_create: &mut CreatableSourceContext<Self>, source: SourceContext) -> Self {
Self { source }
}
}
impl GetNameSource for NvidiaFrameBufferCaptureSource {
fn get_name() -> ObsString {
obs_string!("NvFBC")
}
}
impl VideoRenderSource for NvidiaFrameBufferCaptureSource {
fn video_render(&mut self, _context: &mut GlobalContext, _render: &mut VideoRenderContext) {
todo!()
}
}
impl VideoTickSource for NvidiaFrameBufferCaptureSource {
fn video_tick(&mut self, _seconds: f32) {
todo!()
}
}
impl Module for NvidiaFrameBufferCaptureModule {
fn new(context: ModuleContext) -> Self {
Self { context }
}
fn get_ctx(&self) -> &ModuleContext {
&self.context
}
fn load(&mut self, load_context: &mut LoadContext) -> bool {
let source = load_context
.create_source_builder::<NvidiaFrameBufferCaptureSource>()
.enable_get_name()
.enable_video_render()
.enable_video_tick()
.build();
load_context.register_source(source);
true
}
fn description() -> ObsString {
obs_string!(env!("CARGO_PKG_DESCRIPTION"))
}
fn name() -> ObsString {
obs_string!(env!("CARGO_PKG_NAME"))
}
fn author() -> ObsString {
obs_string!(env!("CARGO_PKG_AUTHORS"))
}
}
obs_register_module!(NvidiaFrameBufferCaptureModule);
I was about to implement obs_hotkey_register_source
, which looks like this:
pub fn obs_hotkey_register_source(
source: *mut obs_source_t,
name: *const ::std::os::raw::c_char,
description: *const ::std::os::raw::c_char,
func: obs_hotkey_func,
data: *mut ::std::os::raw::c_void,
) -> obs_hotkey_id;
This API seems to be undocumented, but used in almost every plugin. By convention, this is called in create
, in which we don't really have our Box<DataWrapper<D>>
ready. However, without data this thing is useless. Any idea on how I can approach this?
In C, we control the malloc
process, so we can throw the pointer into this function, on Rust, this seems impossible.
The current master branch fails to build Rust OBS Wrapper.
$ git log | head -1
commit 08d66c684307bc804c9421ef2b0b4b963ceb4f4c
$ cargo build
(snip warnings)
--> src\output\mod.rs:88:45
|
88 | self.info.[<$f>] = Some(ffi::[<$f>]::<D>);
| ---- ^^^^^^^^^^^^^^^^ expected `u32`, found `u64`
| |
| arguments to this enum variant are incorrect
...
96 | / impl_output_builder! {
97 | | get_name => GetNameOutput
98 | | // this two is required
99 | | // start => StartOutput
... |
117 | | get_connect_time_ms => GetConnectTimeMsOutput
118 | | }
| |_- in this macro invocation
|
= note: expected fn pointer `unsafe extern "C" fn(_, u32, _)`
found fn item `unsafe extern "C" fn(_, u64, _) {raw_audio2::<D>}`
note: tuple variant defined here
= note: this error originates in the macro `impl_output_builder` (in Nightly builds, run with -Z macro-backtrace for more info)
For more information about this error, try `rustc --explain E0308`.
error: could not compile `obs-wrapper` due to previous error
My build environment is here:
$ cargo -V
cargo 1.63.0 (fd9c4297c 2022-07-01)
$ rustc -V
rustc 1.63.0 (4b91a6ea7 2022-08-08)
$ rustup show
Default host: x86_64-pc-windows-msvc
rustup home: C:\Users\y\.rustup
installed toolchains
--------------------
stable-x86_64-pc-windows-msvc (default)
nightly-x86_64-pc-windows-msvc
active toolchain
----------------
stable-x86_64-pc-windows-msvc (default)
rustc 1.63.0 (4b91a6ea7 2022-08-08)
Hi, I have a question on the newly added set_default API.
I want to use that API for loading a string default value.
But, it is very complicated for me...
I wrote code like this:
yoshinorisano/obs-biquad-filter-plugin@7d658d9#diff-b1a35a68f14e696205874893c07fd24fdb88882b47c23cc0e0c80a30c7d53759R170
settings.set_default::<std::borrow::Cow<'_, str>>(obs_string!("filter_type"), std::borrow::Cow::Borrowed("low_pass"));
It works. But, it is not optimal.
I want to use the following const to remove the code duplication, but I cannot find how to do that.
const DEFAULT_FILTER_TYPE: ObsString = obs_string!("low_pass");
@bennetthardwick
If you have some good idea, could you please let me know...?
I've tried different configurations of log
's feature flags and with_promote_debug
& with_max_level
from this crate and have found that when I set the max log level (through with_max_level
) to a log level L
, instead of enabling all log levels >=L
it enables just L
.
The feature flags from log
seem to have no effect on this and I think I know why (maybe they cause the disabled log functions to be left out of the shared object entirely?).
Here's an example (can reproduce on my machine ™️ ) and the relevant lines from the OBS log:
00:44:04.130: Loaded Modules:
00:44:04.130: testing.so
[a bunch of lines omitted for brevity]
00:44:14.453: (INFO) [testing] Info
00:44:14.453: User added filter 'Testing' (my_plugin_source) to source 'Desktop Audio'
EDIT:
$ obs --version
OBS Studio - 27.0.1-3 (linux)
i don't know what you can do to mitigate this. im able to build the docs locally, so it's not a huge deal, but this seems worth fixing if possible
I'm trying to use obs-sys
but I get STATUS_DLL_NOT_FOUND
.
I tried #45 and adding the LIBOBS_PATH="C:\Program Files\obs-studio\bin\64bit"
but it doesn't help.
EDIT: This is a runtime error, it compiles fine.
EDIT2: I'm not using obs-wrapper
as I don't want a plugin, but to use the API to start/stop recording and open/close OBS from a program.
EDIT3: I got it to work putting the binary in the bin/64bit
folder but I need it to work in the editor and without it being in that folder.
Hi.
I'm developing a module that has a filter and a source. They must be interconnected. I assume that the connection should be done through the structure of the module. But I can't find any way how I can get the current module from my filter and source.
OBS has a function obs_current_module()
, but it is not suitable for my task, because it only returns a pointer, which I still can't somehow cast to the Rust's module data struct.
Could you please help me with this task? I'm still just learning Rust and don't understand a lot.
Hi, I'm unable to compile example plugins on Debian 12
.
Compiling libc v0.2.148
Compiling memchr v2.6.3
Compiling proc-macro2 v1.0.67
Compiling unicode-ident v1.0.12
Compiling glob v0.3.1
Compiling autocfg v1.1.0
Compiling prettyplease v0.2.15
Compiling rustix v0.38.14
Compiling lazy_static v1.4.0
Compiling linux-raw-sys v0.4.7
Compiling cfg-if v1.0.0
Compiling regex-syntax v0.7.5
Compiling log v0.4.20
Compiling bitflags v2.4.0
Compiling minimal-lexical v0.2.1
Compiling libloading v0.7.4
Compiling bindgen v0.65.1
Compiling either v1.9.0
Compiling home v0.5.5
Compiling lazycell v1.3.0
Compiling proc-macro-hack v0.5.20+deprecated
Compiling rustc-hash v1.1.0
Compiling peeking_take_while v0.1.2
Compiling shlex v1.2.0
Compiling clang-sys v1.6.1
Compiling bitflags v1.3.2
Compiling serde v1.0.188
Compiling num-traits v0.2.16
Compiling crossbeam-utils v0.7.2
Compiling serde_json v1.0.107
Compiling maybe-uninit v2.0.0
Compiling aho-corasick v1.1.1
Compiling nom v7.1.3
Compiling quote v1.0.33
Compiling cfg-if v0.1.10
Compiling syn v2.0.37
Compiling ryu v1.0.15
Compiling itoa v1.0.9
Compiling crossbeam-channel v0.4.4
Compiling paste-impl v0.1.18
Compiling xcb v0.9.0
Compiling regex-automata v0.3.8
Compiling paste v0.1.18
Compiling which v4.4.2
Compiling cexpr v0.6.0
Compiling regex v1.9.5
Compiling obs-sys v0.3.0 (/home/ioann/rust/rust-obs-plugins/obs-sys)
Compiling xcb-util v0.3.0
warning: Could not find obs headers - using pre-compiled.
warning: This could result in a library that doesn't work.
Compiling obs-wrapper v0.4.1 (/home/ioann/rust/rust-obs-plugins)
Compiling scroll-focus-filter v0.1.0 (/home/ioann/rust/rust-obs-plugins/plugins/scroll-focus-filter)
error: linking with cc
failed: exit status: 1
|
= note: LC_ALL="C" PATH="/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/home/ioann/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" VSLANG="1033" "cc" "-Wl,--version-script=/tmp/rustcYnz5nJ/list" "-Wl,--no-undefined-version" "-m64" "/tmp/rustcYnz5nJ/symbols.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.120dlw301pgb49uf.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.15iwwukc14eicjce.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.16r20jvizd9h9lre.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1b33qx4axuhh6g16.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1cup3i7hxzl8l1ir.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1dh8tpdxmuh85t9i.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1f9u6zb42b995u0p.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1ipv3gvla9papubq.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1l7jg3ayiwuarb1q.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1nijg87i0vyrdy7x.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1ose2g40k1sl88r3.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1pjd6sxj6qmbpmfc.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1q0g9i5ncfk2vr07.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1qb1g2nj7rth94lw.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1vbcs4stdwt99ypm.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1yayul1o081po5il.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1ybxiyws5v0fnbir.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.212cekp0yvbc252v.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.21nh6xgs4x6xcwoy.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.220e8eai8cqemz95.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.22n7am67nxrihzl7.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.22p4l61mym6cnhc0.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.29goh8b4vknv1ax5.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.2b77tlsk77ihj3il.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.2bnlshp0ybu6x4k7.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.2dch6okose12axhz.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.2g9hcrci0bbr7cx5.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.2gjxjy2lqajjhr5l.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.2hmfg4b1sgwxojwx.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.2m9ujbom6pz8fhb7.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.2mm36c6vygdb98vp.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.2py2w07vw1kj43ry.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.2s2rao47bmcu20vy.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.2t1vffmz15744fqd.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.2u2nb00yzq0ah73k.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.2ywjpnee0dsszaua.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.2zwi2ikwbtp1kt04.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.306mxgfz1oqr64mj.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.3441xv357noy53dw.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.3fx8xarwqm0mlc6c.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.3ni3zkmn7au58wz1.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.3o36ku0ycmouaf3.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.3ojkb76gyqqvznfu.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.3pe6z9fznv7zwou5.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.3q14310fbynoyluk.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.3qczjpatj07h4udu.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.3tucysc65l6jb4yq.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.3uutt8bwh1sjy89q.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.3v867h60is2w93jd.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.3ytt1ffibcocx10l.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.3z49eu0dm3pxy6f8.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.3zam25l305hg60cf.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.43y3pt22pnf43h23.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.44ezsxsyzg2gumry.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.45wpdrcg3qow0b1v.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.461pwpl0x0eobqzw.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.46fn25g079dyy7h.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.490e9b3gy8uauv1l.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.49jr0s3qnozlstrs.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4eouhyu68mpbdooi.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4fuqmlrf23ub8ew0.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4fz102kywycrp29q.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4gc3qldxqwwyr15d.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4gfltwcyjou2xjp5.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4hbvua3xrb1f5mo9.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4i3x21wgk39noskm.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4lmfvfavpd8uuj5v.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4mmhce1jgcv1vr2w.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4qa6rive40yj9s6y.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4rukwgo9jxklpcik.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4thfr97somre3p2i.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4v5z27stov8vc5kf.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4yza5hosq4fiw2qv.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.4z6nad5vhpgz5f1w.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.51s0g7abc9pb1hsj.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.51vld3y7bgjknl26.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.533g83n613m9bhts.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.54b2z9m4ugv3vw56.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.54zl7m3o2tzjsp1f.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.5bmwm36fa6p24bwt.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.5cfd3mou4kl431qg.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.5crazg8pq98libic.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.6gp94jd80gmf39l.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.753wzgszvtk1vo4.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.91gk2lsywad7lsh.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.9rro2ffj2g2w5mr.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.asl9tk97duz0r5s.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.e4dk2fcl280t7ej.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.g8qmhke3nbohr0k.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.irq382awwlmfrcm.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.ktx5mmmw9t59mpm.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.kys2dhnqlve5nh7.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.ld7iacze3yjmcmq.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.m5plceaa5x7cb3n.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.n5za2h0ed5es9rk.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.oa07ejhqmfyet0n.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.obm8w6qdmkhzfhc.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.qe99jpvdp84x03j.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.r2bzavitg7phhr3.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.rfm5mevs7y7hp4v.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.y3n39dpsrichrvd.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.ysxb76sqkho8bav.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.zdgng2ha26owqxq.rcgu.o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/scrollfocus.1juk520oraorvd46.rcgu.o" "-Wl,--as-needed" "-L" "/home/ioann/rust/rust-obs-plugins/target/debug/deps" "-L" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/libcrossbeam_channel-16895e261db507e3.rlib" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/libmaybe_uninit-32ef4f3e28d77828.rlib" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/libcrossbeam_utils-02284e1e82422f37.rlib" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/liblazy_static-ea967ec45ae077a3.rlib" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/libcfg_if-747b03c4ddc718bc.rlib" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/libobs_wrapper-59a2383c71852763.rlib" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/libnum_traits-9b4795cefd04bea4.rlib" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/libpaste-0874ca32b194aade.rlib" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/libobs_sys-6a142e14287b35ea.rlib" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/libxcb_util-e7f0ad1d62ef8961.rlib" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/libxcb-75f040a999ee2580.rlib" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/liblog-bdcf9f693d28b597.rlib" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/liblibc-aacc4d374f09b581.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-b850d2b001350814.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-a3d926e3ce38f6cc.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-0a660adf51e0d01c.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr-49252de8bfa771e2.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-6f52a21444f37c70.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-57e8575f0ca731a2.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-da4065b9a8ae7be4.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-1ad47776352198ff.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-7075f8a8dc932a7c.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-a494eb4ddbb000f0.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-672778ed8628861b.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-9bba1c59dcc21440.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-b9849fb628ce12eb.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-0ea4fcc08eb96f77.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-a8ba743c059cc198.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-e4195ee2443e1656.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-04991604e2730fd6.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-f02db372677d4667.rlib" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-448eba810c83029d.rlib" "-Wl,-Bdynamic" "-lobs" "-lobs-frontend-api" "-lxcb-ewmh" "-lxcb" "-lxcb-randr" "-lxcb-render" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/home/ioann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/home/ioann/rust/rust-obs-plugins/target/debug/deps/libscrollfocus.so" "-Wl,--gc-sections" "-shared" "-Wl,-z,relro,-z,now" "-nodefaultlibs"
= note: /usr/bin/ld: cannot find -lobs: No such file or directory
/usr/bin/ld: cannot find -lobs-frontend-api: No such file or directory
/usr/bin/ld: cannot find -lxcb-ewmh: No such file or directory
/usr/bin/ld: cannot find -lxcb: No such file or directory
/usr/bin/ld: cannot find -lxcb-randr: No such file or directory
/usr/bin/ld: cannot find -lxcb-render: No such file or directory
collect2: error: ld returned 1 exit status
error: could not compile scroll-focus-filter
(lib) due to previous error
The issue is that ld
cannot link obs
& xcb
libraries. But ldconfig -p
shows they are present:
libobsglad.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libobsglad.so.1
libobs.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libobs.so.0
libobs-scripting.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libobs-scripting.so.1
libobs-opengl.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libobs-opengl.so.1
libobs-frontend-api.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libobs-frontend-api.so.0
libxcb.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb.so.1
libxcb.so.1 (libc6) => /lib/i386-linux-gnu/libxcb.so.1
libxcb-xv.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-xv.so.0
libxcb-xkb.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-xkb.so.1
libxcb-xinput.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-xinput.so.0
libxcb-xinerama.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-xinerama.so.0
libxcb-xfixes.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-xfixes.so.0
libxcb-xfixes.so.0 (libc6) => /lib/i386-linux-gnu/libxcb-xfixes.so.0
libxcb-util.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-util.so.1
libxcb-sync.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-sync.so.1
libxcb-sync.so.1 (libc6) => /lib/i386-linux-gnu/libxcb-sync.so.1
libxcb-shm.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-shm.so.0
libxcb-shm.so.0 (libc6) => /lib/i386-linux-gnu/libxcb-shm.so.0
libxcb-shape.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-shape.so.0
libxcb-res.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-res.so.0
libxcb-render.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-render.so.0
libxcb-render-util.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-render-util.so.0
libxcb-randr.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-randr.so.0
libxcb-randr.so.0 (libc6) => /lib/i386-linux-gnu/libxcb-randr.so.0
libxcb-present.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-present.so.0
libxcb-present.so.0 (libc6) => /lib/i386-linux-gnu/libxcb-present.so.0
libxcb-keysyms.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-keysyms.so.1
libxcb-image.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-image.so.0
libxcb-icccm.so.4 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-icccm.so.4
libxcb-glx.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-glx.so.0
libxcb-glx.so.0 (libc6) => /lib/i386-linux-gnu/libxcb-glx.so.0
libxcb-dri3.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-dri3.so.0
libxcb-dri3.so.0 (libc6) => /lib/i386-linux-gnu/libxcb-dri3.so.0
libxcb-dri2.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-dri2.so.0
libxcb-dri2.so.0 (libc6) => /lib/i386-linux-gnu/libxcb-dri2.so.0
libxcb-damage.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-damage.so.0
libxcb-composite.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxcb-composite.so.0
libX11-xcb.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libX11-xcb.so.1
libX11-xcb.so.1 (ELF) => /lib/i386-linux-gnu/libX11-xcb.so.1
OBS is installed via unofficial Debian package.
I've tried to play with obs-sys/build.rs
:
file /usr/lib/x86_64-linux-gnu/libobs.so.29
)).so
files inside obs-sys
and add println!("cargo:rustc-link-search=native=.")Nothing worked. I feel like I'm missing something obvious so I wonder can i get any help with this issue.
cargo build --release
in each example plugin folder:
Compiling rnnoise-denoiser-filter v0.1.0 (D:\Documents\GitHub\sectorxusa\rust-obs-plugins\plugins\rnnoise-denoiser-filter)
Running `rustc --crate-name rnnoisedenoiser --edition=2018 'plugins\rnnoise-denoiser-filter\src\lib.rs' --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type cdylib --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 -C metadata=339930d1b925705d --out-dir 'D:\Documents\GitHub\sectorxusa\rust-obs-plugins\target\debug\deps' -C 'incremental=D:\Documents\GitHub\sectorxusa\rust-obs-plugins\target\debug\incremental' -L 'dependency=D:\Documents\GitHub\sectorxusa\rust-obs-plugins\target\debug\deps' --extern 'dasp=D:\Documents\GitHub\sectorxusa\rust-obs-plugins\target\debug\deps\libdasp-1219642a476d077a.rlib' --extern 'nnnoiseless=D:\Documents\GitHub\sectorxusa\rust-obs-plugins\target\debug\deps\libnnnoiseless-9d5ffb5565c55d5a.rlib' --extern 'obs_wrapper=D:\Documents\GitHub\sectorxusa\rust-obs-plugins\target\debug\deps\libobs_wrapper-8fa71ee893df0268.rlib'`
error: linking with `x86_64-w64-mingw32-gcc` failed: exit code: 1
|
= note: "x86_64-w64-mingw32-gcc" "-Wl,C:\\Users\\VUWORL~1\\AppData\\Local\\Temp\\rustcUqSYgH\\list.def" "-fno-use-linker-plugin" "-Wl,--dynamicbase" "-Wl,--disable-auto-image-base" "-m64" "-Wl,--high-entropy-va" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained\\dllcrt2.o" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsbegin.o" "C:\\Users\\VUWORL~1\\AppData\\Local\\Temp\\rustcUqSYgH\\symbols.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.0.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.1.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.10.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.11.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.12.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.13.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.14.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.15.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.2.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.3.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.4.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.5.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.6.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.7.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.8.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.rnnoisedenoiser.1394d85a-cgu.9.rcgu.o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.4wj53ky7h0hllzme.rcgu.o" "-L" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps" "-L" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-Wl,-Bstatic" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libdasp-4b6884bc08ed1cca.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libdasp_window-8e25f8cb6a5c94c6.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libdasp_signal-fd8417b8836d637d.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libdasp_ring_buffer-260373cb6b7d8778.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libdasp_interpolate-f29e36991327acc3.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libdasp_frame-c612b03f544336cd.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libdasp_sample-9cbcfefdfb5e616d.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libobs_wrapper-55ba980bd846e54b.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\liblog-35f8351c88c3ea1b.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libcfg_if-da9ea6a6bf534ac4.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libpaste-6c9ef8dc830bbfd6.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libobs_sys-fd62f8d7ad4f9cac.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libnnnoiseless-31b1cc0e3bf97ce3.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\librustfft-6b4c742f5c4c4a22.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libtranspose-c5d9b3d7891f0757.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libstrength_reduce-0fb02c8ff4f4c885.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libnum_integer-5ddc38726289a198.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libnum_complex-8ea011545b5505bc.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libnum_traits-8dd47518789d9cb0.rlib" "D:\\Documents\\GitHub\\SectorXUSA\\rust-obs-plugins\\target\\release\\deps\\libonce_cell-6517ca6cadbc627a.rlib" "-Wl,--start-group" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libstd-fefff10efd686913.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libpanic_unwind-9c45725c63c0d5ed.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libobject-5e1c5cd9ff1eb7cc.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libmemchr-b6bf783b1c783d10.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libaddr2line-2241249e06c7cb40.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libgimli-03f5272f7c5d2bd2.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_demangle-8def22be308808fe.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libstd_detect-8931bc6a2b527206.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libhashbrown-6e27c0716ec027b4.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libminiz_oxide-c5bbe248c77f2f0b.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libadler-9148e9af213d2829.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_alloc-47941ef50057df8b.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libunwind-66b0ea2785827b9a.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcfg_if-4b65aaa3f0b095f9.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liblibc-04a1f133ddb50e5e.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liballoc-f67804e146a91ffe.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_core-a5cbd3ad9e3068dd.rlib" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcore-4bc25ea8e4535542.rlib" "-Wl,--end-group" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcompiler_builtins-ac0b598a973ccaf7.rlib" "-Wl,-Bdynamic" "-lobs" "-ladvapi32" "-luserenv" "-lkernel32" "-lws2_32" "-lbcrypt" "-lgcc_eh" "-l:libpthread.a" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lgcc" "-lmsvcrt" "-luser32" "-lkernel32" "-Wl,--nxcompat" "-nostartfiles" "-L" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-L" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained" "-o" "D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\rnnoisedenoiser.dll" "-Wl,--gc-sections" "-shared" "-Wl,--out-implib=D:\\Documents\\GitHub\\sectorxusa\\rust-obs-plugins\\target\\release\\deps\\librnnoisedenoiser.dll.a" "-Wl,-O1" "-nodefaultlibs" "C:\\ProgramData\\chocolatey\\lib\\rust\\tools\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsend.o"
= note: ld: cannot find -lobs
error: could not compile `rnnoise-denoiser-filter` due to previous error
Looks like I can't get it to link against lib-obs? Using rust 1.64.0
and llvm 15.0.3
via Chocolatey for reference.
error: could not compile `obs-wrapper`
To learn more, run the command again with --verbose.
error[E0308]: mismatched types
--> C:\Users\fenhl\.cargo\registry\src\github.com-1ecc6299db9ec823\obs-wrapper-0.1.6\src\module.rs:29:44
|
29 | obs_register_source_s(pointer, std::mem::size_of::<obs_source_info>() as u64);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u32`, found `u64`
|
help: you can convert a `u64` to a `u32` and panic if the converted value doesn't fit
|
29 | obs_register_source_s(pointer, (std::mem::size_of::<obs_source_info>() as u64).try_into().unwrap());
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Let me know if you need additional info.
I'm trying to make a plugin where on the creation of my source, I would like to create a private browser source and add it to the current scene. From what I have gathered, it appears I require the OBS Frontend API in order to do this, which is not currently exposed in the FFI. Is there a way around this limitation, or could these mappings be added in some way?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.