【问题标题】:How can I import other files in Vala?如何在 Vala 中导入其他文件?
【发布时间】:2013-12-25 19:35:31
【问题描述】:

这个问题几乎说明了一切——我如何将file2.vala 导入到file1.vala

【问题讨论】:

    标签: import vala


    【解决方案1】:

    你不直接做。如果你运行valac file1.vala file2.vala,就好像你把它们编译成一个大文件一样。

    如果您想让它们可重复使用,那么您可能需要一个共享库。在这种情况下,您编译一个以生成 C 头文件和 VAPI 定义:

    valac --vapi file1.vapi -H file1.h --library libfile1.so file1.vala
    

    第二个可以消费这个:

    valac --pkg file1 file2.vala
    

    这假定 VAPI 文件已安装。如果不是这种情况,您需要传递--vapidirfile1.vapi 所在的位置,可能是.。同样,您需要通知 C 编译器 file1.h-X -I/directory/containing 的位置,同样,可能是 -X -I.。最后,您需要通过-X -L/directory/containing -X -lfile1 告诉C 链接器libfile1.so 在哪里。这是一个小平台特定的,您可以使用 AutoMake 消除差异,尽管这涉及更多。 Ragel 是如何将 AutoMake 与 Vala 一起使用的常用项目。

    【讨论】:

      【解决方案2】:

      只是为了供应apmasell:

      您可以通过使用类和公共变量来使用多个文件:

      main.vala:

      extern void cfunction(string text);
      
      void main ()
      {
          first f = new first ();
          f.say_something(f.mytext);
          cfunction("c text\n");
      }
      

      class.vala:

      public class first {
      
          public string mytext = "yolo\n";
          public first ()
          {
              stdout.printf("text from constructer in first\n");
          }
      
          public void say_something(string text)
          {
              stdout.printf("%s\n", text);
          }
      }
      

      文本.c:

      #include <stdio.h>
      
      void cfunction(const char *s)
      {
          puts("This is C code");
          printf("%s\n", s);
      }
      

      编译为:valac class.vala main.vala text.c

      如您所见,您甚至可以使用 C 代码

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-07
        • 2021-10-04
        • 2022-01-22
        相关资源
        最近更新 更多