gpt4 book ai didi

c++ - C++ 中的 Vala GUI 和逻辑

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:20 24 4
gpt4 key购买 nike

我有一个使用 C++ 编写的 SDL 绘图程序。我只想在 Vala 中创建一个图形界面,并用它来调用程序中的函数(函数已经准备好使用,我只想从 GUI 中调用它们)。我一直在寻找 VAPI 的解决方案,并且考虑使用 GObject,但我不能同时接受这两者。有没有人做过类似的事情,你能建议我解决我的问题吗?

最佳答案

如果您想在 Vala 中使用 C++ 代码,我们会适本地准备它们。这是一个例子。

首先,您必须告诉valac 编译器该函数是在别处定义的。让我们使用 extern 指令。

// ccodetest.vala
extern void cpp_test_function ();

void main () {
stdout.printf ("This is Vala code\n");
cpp_test_function ();
}

然后 C++ 中的函数与从 C 派生的目标文件正确链接,我们将它们声明为 extern "C"

// cpplibrary.cpp
# include

using namespace std;

extern "C" void cpp_test_function () {
cout << "This is a C + + code\n";
}

准备就绪后,我们可以将 Vala 代码编译为 C。我们得到 ccodetest.c

valac -C ccodetest.vala

现在我们可以使用gcc 来编译目标文件了。我们得到 ccodetest.o

gcc-o ccodetest.o ccodetest.c-c-I/usr/include/glib-2.0/-I/usr/include/glib-2.0/glib/-I/usr/lib/glib-2.0/include/

文件C++编译如下。

g++ -o cpplibrary.cpp.o cpplibrary.cpp -c

最后我们链接两个文件。

g++ -o ccode_test ccodetest.o cpplibrary.cpp.o -L/usr/lib/-lglib-2.0 -lgobject-2.0

程序的工作原理如下:

$ ./ccode_test
This is Vala code
This is a C++ code

关于c++ - C++ 中的 Vala GUI 和逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16885242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com