Я использую Rust для вызова функции C с циклом (for
или while
), который использует функцию printf
для отображения чего-либо, но функция C не отображает никакого вывода из printf
.
код C:
#include <stdio.h>
#include <unistd.h>
void print_c() {
int s = 3;
while (1) {
printf("%d\n", s);
sleep(1);
}
}
Однако при использовании C ++ вывод успешно генерируется.
C ++ код:
#include <iostream>
#include <stdint.h>
#include <unistd.h>
extern "C" {
int print_it(int32_t num) {
while (1) {
std::cout << num << std::endl;
sleep(1);
}
}
}
C упакован как общая библиотека с именем "cthread". C ++ называется "cppthread".
Это Rust, вызывающий библиотеку C:
#[link(name = "cthread")]
extern "C" {
fn print_c();
}
fn main() {
unsafe { print_c() };
}
И Rust вызывает библиотеку C ++:
#[link(name = "cppthread")]
extern "C" {
fn print_it();
}
fn main() {
unsafe { print_it() };
}