vtk用户指南 第二章 安装

        本章描述在您的计算机系统上安装VTK所需的步骤。这一进程的总体难度取决于几个因素。在Microsoft Windows上,您可以安装预构建的vtk.exe并使用它运行Tcl脚本。对于Python或Java使用,将VTK库链接到您自己的应用程序中,或者在Microsoft Windows以外的任何平台上使用VTK,您必须从源代码构建VTK。(有太多的平台变化-保持二进制发行版最新是太多的工作,所以我们专注于使VTK易于在任何地方构建。)如果您正在编译VTK源代码并构建自己的库,那么预计在更快的多处理器系统上花费一个半小时,在较慢的内存有限的系统上花费几个小时。此外,构建的时间取决于您围绕VTK c++核心封装了多少种解释语言,以及您的系统配置。您可能希望参考第19页的“系统架构”以获得VTK架构的概述,这可能使编译过程更容易遵循。另外,如果遇到麻烦,可以联系vtkusers邮件列表(请参阅第6页的“附加参考资料”)。

2.1概述

        VTK编译和运行在许多不同的计算机平台上。通过平台,我们指的是操作系统、硬件配置和编译器的各种组合。由于可能有大量的组合,VTK的二元分布通常是不可行的。因此,要安装VTK,您必须编译并链接源代码以生成库和可执行文件。这个过程的例外情况是,如果您正在使用Tcl解释语言创建VTK应用程序。在这种情况下,预编译的二进制文件可能可用于Windows平台。否则,您将不得不从源代码编译Tcl和Python VTK可执行文件。

        本章以CMake的概述开始,这是一个跨平台的Make工具。CMake在所有操作系统上用于配置构建环境。接下来,本章根据您要安装的操作系统类型分为两个部分:Windows或UNIX(对于10安装Macintosh OSX或Linux,请遵循UNIX的说明)。您只需要阅读安装所需的相应部分。visualtoolkit不能在旧版本的Windows(如Windows 3.1)上运行。它也不能在OSX 10.2 (Jaguar)之前的任何Macintosh操作系统上运行。

2.2 CMake

        CMake是一个用于配置和管理构建过程的开源、跨平台工具。简单的、独立于平台的文件(CMakeLists.txt)用于描述构建过程和捕获依赖项。当CMake运行时,它会为您正在使用的特定编译器/操作系统生成本地构建文件。例如,在带有Microsoft Visual Studio的Windows上,将创建解决方案文件和项目文件。在Unix上,创建makefile。通过这种方式,您可以使用单个源代码树在任何计算机上轻松编译VTK,并使用开发工具(编辑器,调试器,分析器,编译器等),这些工具对您正在工作的平台来说是自然的。(从cmake.org了解更多关于CMake的信息。Kitware还出版了一本名为Mastering CMake的书以获取详细信息。)从http://www.cmake.org下载最新的CMake。

        运行CMake需要三个基本信息:使用哪个编译器,源代码目录(即源树)在哪里,以及哪个目录(即构建树)放置编译过程产生的目标代码,库和二进制文件。CMake将读取源树中找到的顶级CMakeLists.txt文件,并在构建树中生成一个缓存(CMakeCache.txt)。注意,CMake可以很好地处理复杂的源代码目录结构——在源代码树的每个子目录中将有一个CMakeLists.txt文件。

        一旦提供了这些基本信息,用户就调用configure步骤。这导致CMake读取顶层的CMakeLists.txt文件,确定系统配置,定位系统资源,并下降到源树中的子目录。当CMake运行时,它会发现控制构建过程的CMake变量和标志(CMake缓存项)。这些将在配置过程结束后呈现给用户。如果用户想要改变缓存值,CMake提供了一个简单的GUI。更改它们之后,将执行另一个configure调用。这个迭代配置过程一直持续到不需要额外的更改为止。到达这一点后,用户调用生成步骤。生成步骤生成用于控制指定编译器的生成过程的解决方案文件、项目文件或生成文件。

        在接下来的两个部分(Windows和Unix)中,提供了在每个平台上运行CMake的具体说明。请注意,上面描述的一般说明适用于所有系统。CMake用户界面可能根据您的平台而有所不同。尽管CMake -gui (CMake 2.6及更高版本中可用的基于qt的新界面)在不同平台之间非常相似。此外,如果可能的话,为CMake安装预编译的二进制文件,而不是从源代码构建CMake。

2.3在Windows XP、Vista或更高版本上安装VTK

多种方法——创建自己的类(参见305页的“编写VTK类:概述”),使用运行时可编程过滤器(参见419页的“可编程过滤器”),以及在运行时用自己的类版本替换VTK类(参见307页的“对象工厂”)。

二进制安装

        要安装VTK Tcl/Tk可执行文件VTK .exe,请运行安装程序VTK - x.x.x -win32.exe,该程序可从vtk.org的下载页面获得,将弹出安装GUI(如图2-1所示)。“X.X.安装程序文件名中的“X”表示用于构建它的VTK的版本号。您也可以下载VTK源树和VTKData目录下对应的*.zip文件。当我们发布新版本的VTK时,我们通过vtk.org下载页面的链接提供它们。关注vtkusers邮件列表上的发布公告。

        VTK源代码树包含许多*。您可以使用tcl脚本来了解各种VTK类的工作原理。下载“vtk-X.X.X.zip”和“vtkdata-X.X.X.zip”解压到硬盘上。在VTK文件夹中,您会发现一个“示例”文件夹。在Examples文件夹下,有GUI、MangledMesa和Parallel等文件夹;每个文件夹都有一个名为Tcl的子文件夹,其中包含各种Tcl示例。除了Examples文件夹之外,还有像Graphics、Imaging和Filtering这样的库文件夹。这些文件夹中的每一个都包含一个Testing/Tcl子文件夹,其中包含VTK的回归测试。通过双击Tcl文件尝试运行任何示例。当您双击Tcl文件(。(TCL扩展名)时,可能会出现一个对话框,询问您使用什么来打开文件。这意味着您需要在Tcl文件和vtk可执行文件之间创建关联以运行它们。如果发生这种情况,单击对话框上的“从列表中选择程序”按钮,然后单击“确定”。将出现一个标记为“Open With”的新对话框。单击该对话框中的“浏览”按钮以显示文件浏览器。在浏览器中进入VTK安装目录。通常这是C:\Program Files\VTK 5.4或C:\Program Files\Documents和Settings\<username>\My Documents\VTK 5.4。在那里,你应该看到一个bin文件夹,其中包含一个名为vtk的程序。双击vtk(或vtk.exe)。确认在“打开方式”对话框中勾选了“总是使用所选程序打开此类文件”复选按钮,然后选择“确定”按钮。然后您的示例应该运行。以后,双击任何Tcl脚本将自动开始执行vtk。

        或者,如果Tcl文件已经与希望的可执行文件相关联(从安装Tcl/ Tk二进制文件),当你双击Tcl文件时,你会看到一个类似以下的错误消息:当执行“package require vtk”时,不能找到包vtk。如果您收到此错误消息,请右键单击Tcl文件,并从弹出菜单中选择“Open With…”。将出现“Open With”对话框。按照前一段的其余说明将Tcl文件与vtk可执行文件关联起来。

        这就完成了Windows的二进制安装过程。在第三章中,我们将更详细地介绍如何编写自己的c++, Tcl, Java和Python应用程序。

源代码安装说明

        要开发c++应用程序并扩展VTK,您需要进行源代码安装。这是更具挑战性的,可能会束缚你的机器几个小时,因为它编译VTK。首先,您需要确保您的机器能够构建VTK源代码发布。你必须运行Windows XP、Vista或更高版本。您需要在机器上安装c++编译器。本指南中的说明是针对Microsoft Visual Studio 2005或更高版本的,它可以很好地与VTK一起工作。我们还支持Borland c++编译器、Cygwin或MinGW下的gcc、NMake、Microsoft Visual c++免费版和Microsoft Visual c++ 2005。如果您还没有安装c++编译器,那么您必须首先安装c++编译器。

        下一个要考虑的问题是您计划使用哪些附加工具。如果你打算用Java进行开发,那么你必须下载并安装Java JDK,它可以从Sun Microsystems(网址:http://www.java.sun.com)获得。如果您打算使用Tcl/Tk,而不使用Microsoft Visual c++,那么您需要从http://www.tcl.tk下载并构建Tcl/Tk的源代码版本,或者从http://www.activestate.com/Products/ActiveTcl下载并安装Tcl/Tk二进制文件。(注:Tcl/Tk版本8.4与VTK版本5.4.0兼容。)

        安装CMake。要编译VTK,首先需要安装CMake。CMake的安装程序可从http://www.cmake.org获得。

        CMake运行。在你设置好你的c++编译器,安装了CMake,并安装了任何额外的包,如Tcl, Java和Python之后,你就可以运行CMake了。要运行CMake,在开始菜单的Programs->CMake->CMakeSetup下应该有一个CMake条目。CMakeSetup.exe界面(图2-2)是一个简单的程序,允许您自定义构建到您的特定机器和所需的VTK选项。首先,你必须告诉CMakeSetup VTK的源代码树在哪里,你想把VTK二进制文件放在哪里(这些是编译源代码的结果)。你可以通过Browse按钮或图2-2来指定这些目录。CMake用于为不同的编译器和操作系统生成项目、生成文件或工作区。CMake是跨平台的。一旦选择了源目录和二进制目录,您应该单击Configure按钮。第一次单击Configure按钮时,CMake将显示一个对话框,您可以从中选择用于编译VTK的构建系统。然后CMakeSetup GUI将被CMake缓存中的变量和值列表填充。当第一次运行时,所有的变量都是红色的。红色表示在前面的配置步骤中生成或更改了缓存项。

        此时,您可以自定义您的VTK构建。例如,如果您想启用VTK的Tcl包装功能,请在缓存值编辑器中向下滚动到VTK_WRAP_TCL条目,然后单击该值将其从OFF切换到on。之后,再次单击Configure按钮。这将导致大多数值变为灰色,而任何新值都将显示为红色。如果您从二进制安装中安装Tcl/ Tk,则所有新值都不应该以NOTFOUND作为值;如果有,你必须用CMake接口手动指定这些路径。在CMake界面中,单击对应变量右侧的,可以设置任意值。根据变量的类型,可能会有一个文件选择器、编辑框或下拉,允许您编辑该值。

        •BUILD_SHARED_LIBS—如果这个布尔值被设置为yes,那么dll或共享库将被构建。如果不是,那么将构建静态库。默认是静态库。静态库在某种程度上更容易使用,因为在运行可执行文件时,它们不需要位于您的路径中。可执行文件将是自包含的。这对于基于VTK的应用程序的分发是首选的。

        •VTK_WRAP_TCL -决定是否构建Tcl封装。

        •VTK_WRAP_PYTHON -这决定是否将构建Python包装。

        •VTK_WRAP_JAVA -这决定是否Java包装将被构建。

        要在CMake中获得任何变量的在线帮助,只需右键单击该值并选择“缓存条目帮助”。大多数默认值应该是正确的。

        继续单击Configure,直到不再有任何红色值,并且您对所有值都满意为止。此时,您可以单击OK按钮。这将导致CMake为所选的构建类型写出构建文件。对于Microsoft,项目文件将位于您选择的二进制路径中。只需加载这个项目文件(VTK。dsw导入Visual Studio 6.0, VTK。sln(适用于. net),然后在Visual Studio的build - Set Active configuration菜单中选择要构建的配置。您可以选择Debug、Release、MinSizeRel(最小大小的发布)和RelWithDebInfo(带有调试信息的发布)。您可以选择ALL_BUILD项目,并像编译任何其他Visual Studio项目一样编译它。对于Borland,生成makefile文件,您必须使用该编译器提供的命令行make。makefile位于您指定的二进制目录中。

        一旦VTK被构建,所有生成的库和可执行文件都将位于你指定的CMake子文件夹bin中的二进制目录中(除非你改变了CMake中的EXECUTABLE_OUTPUT_PATH或LIBRARY_OUTPUT_PATH变量)。

        (注意:不要使用msvc++的“全部重建”菜单选择来重建源代码。这将删除所有CMakeLists.txt文件,这些文件将作为构建过程的一部分自动重新生成。然后MSVC将尝试重新加载它们,并将导致错误。相反,重建一切,删除你的VTK二进制目录,重新运行CMake,然后做一个正常的构建。)

        如果您使用BUILD_SHARED_LIBS构建VTK,那么您的客户端应用程序将需要在运行时定位并加载VTK dll。有许多不同的方法,你的应用程序可能会在安装时找到VTK dll。每种方式都有利有弊。最简单的方法是确保您的应用程序和VTK dll存在于同一目录中。您可以复制所有的VTK dll到您的应用程序的目录,或构建您的应用程序到同一目录的VTK dll是在使用EXECUTABLE_OUTPUT_PATH在您自己的应用程序的CMakeLists文件。如果应用程序的可执行文件和VTK dll存在于同一目录中,那么一切都应该正常工作。这些方法的优点是简单。缺点是:如果你复制了VTK dll,如果你更新和重建VTK,你需要确保你再次复制它们;如果您的应用程序的构建输出与VTK的构建输出混合在一起,那么可能很难确定哪个构建产品来自哪个项目(如果需要的话)。

        另一种选择是修改PATH环境变量,以便您的应用程序可以找到VTK dll,即使它们不在同一目录中。然而,在这个备选方案中,有几种方法可以完成任务。您可以设置一个命令提示符,仅在该命令提示符中修改PATH,然后从该命令提示符启动应用程序,或者您可以更改用户的PATH环境变量或系统范围的PATH环境变量。建议更改用户或系统范围的PATH环境变量,除非您需要在同一台计算机上有两个或更多不同的VTK构建。

        KWWidgets项目(http://www.kwwidgets.org)提供了一个从批处理脚本设置PATH的好例子(以避免更改PATH环境变量),请参阅KWWidgets项目构建树中的kwwidgetssetupathath .bat脚本。要获取KWWidgets的源代码,请按照http://www.kwwidgets.org上的说明进行操作。

        要设置可用于启动可查找VTK dll的可执行文件的命令提示符,请创建命令提示符的快捷方式,然后将其设置为在启动时调用批处理文件。这是Visual Studio用来创建命令提示符的技术,您可以在其中运行命令行编译器或nmake。你可以右键单击Windows开始菜单中的快捷方式,然后选择属性来查看其他命令提示快捷方式是如何工作的。您还可以将其中一个拖放到桌面上,同时按住control键在桌面上创建一个副本。然后,您可以修改桌面快捷方式的属性,以调用您自己的批处理文件,该文件可以设置您的PATH和您的应用程序可能需要的任何其他环境设置。在命令提示符中使用"/K batchfilename.bat"参数来运行批处理文件,然后让命令提示符继续运行。在任何Windows命令提示符中输入“cmd /?”以获取关于/K选项的更多信息。

        有关在Windows上定位dll的进一步讨论,请参阅Windows SDK文档中的LoadLibrary和LoadLibraryEx函数。

        如果你已经做到了这一点,那么你已经成功地在PC上构建了VTK。由于软件的大小和复杂性,这可能是一个具有挑战性的过程。请仔细注意前面给出的说明。如果遇到问题,您可能希望加入vtkusers邮件列表(请参阅第6页的“附加参考资料”)并在那里寻求帮助。Kitware也提供商业支持。

2.4在Unix系统上安装VTK

        有各种各样的Unix系统。因此,您将不得不编译VTK源代码来构建二进制文件和可执行文件。

源代码安装

        本节将引导您完成在UNIX系统上构建VTK所需的步骤。与Windows不同,Unix系统无法使用预编译的库和可执行文件,因此您必须自己编译VTK。(注意:检查vtkusers邮件列表和其他资源,如第6页“附加资源”中所述-一些用户在Web上维护二进制文件。)通常,这是一个相当简单的过程,根据机器的速度,大约需要一到四个小时。(使用并行构建的高端大内存多处理器机器可以在10分钟内构建c++和Tcl库和可执行文件!)大部分时间都花在等待计算机编译源代码上。只需要10-30分钟的时间。第一步是确保你有必要的资源来构建VTK。为了安全起见,您将需要大约300兆字节的磁盘空间。在某些系统上,例如SGI,您可能需要更多的空间,特别是在编译VTK的调试版本时。您还需要一个c++编译器,因为VTK是用c++编写的。c++编译器通常被称为CC、g++或acc。如果您不确定是否有c++编译器,请咨询您的支持人员。

        如果你打算在Tcl/Tk、Python或Java中使用VTK,那么你首先需要下载并安装这些包。Java JDK可以从Sun Microsystems的http:// www.java.sun.com获得。如果您计划使用Tcl/Tk,并且系统上还没有安装它,那么您需要从http://www.tcl.tk下载Tcl/Tk。Python可以从http://www.python.org下载。按照这些包中的说明来构建它们。

CMake

        与Windows环境类似,Unix上的VTK使用CMake进行构建过程。(参见CMake的前一节。)CMake的预编译二进制文件可用于许多Unix系统;但是,如果二进制文件不可用,您可能必须构建CMake。(到http:// www.cmake.org下载预编译的二进制文件。)

安装CMake。如果有预编译的二进制文件,请下载并将tar文件解压缩到目标目录(通常是/usr/local)。要么确保cmake和相关的可执行文件在您的路径中,要么通过给出cmake及其相关的可执行文件的完整路径来运行它们。

        CMake打包。如果没有预编译的CMake二进制文件,则必须构建并安装CMake。要构建和安装CMake,只需将源代码(在http://www.cmake.org上找到)解压缩到一个目录,然后运行(在该目录下):

./configure

make

make install

        如果您没有root权限,可以跳过上面的第三步(即进行安装)。CMake可执行文件将位于CMake/bin/。有两个不同的CMake可执行文件可用于配置VTK: ccmake提供了一个基于终端的界面,非常类似于Windows安装部分中描述的CMakeSetup, CMake实现了一个向导,要求你回答一系列问题,以便配置构建。

        告诉CMake你想使用哪个c++和C编译器是个好主意。在大多数Unix系统上,您可以这样设置信息:

setenv CXX /your/c++/compiler

setenv CC /your/c/compiler

或者

export CXX=/your/c++/compiler

export CC=/your/c/compiler

        否则,CMake将自动检测您的编译器——然而,如果您的系统上有多个编译器,这可能不是您想要的。一旦你这样做了,创建一个空的二进制目录(例如,VTK-bin)在同一级别的VTK源目录,并在其中运行CMake,传递路径到VTK源目录如下所示。

cd VTK-bin

ccmake ../VTK

或者

cd VTK-bin

cmake -i ../VTK

        (下面两个小节中的说明描述了ccmake和cmake -i之间的区别。)熟悉配置脚本的UNIX开发人员会注意到CMake和configure在功能上是相似的。

        然而,configure使用命令行参数来控制生成文件,而在CMake中,构建选项可以从用户界面设置。使用基于终端的用户界面(ccmake)定制构建。ccmake有一个简单的基于终端的界面,允许您自定义VTK构建到您的特定机器和所需的选项。一旦你使用ccmake运行CMake,你会看到一个选项列表,可以修改以自定义VTK构建。CMake将能够将这些选项设置为合理的默认值。要更改值,只需使用方向键滚动,并在突出显示所需选项时按enter键。然后,您将能够编辑该选项(除非该变量是布尔值,在这种情况下,按enter键将切换该值)。完成编辑操作后,再次按enter键以继续滚动选项。一旦你设置了所有你想要的选项,按“c”。然后,CMake将处理配置文件,并在必要时在顶部显示新的选项(例如,如果您打开VTK_WRAP_TCL,您将看到Tcl/Tk库和包含路径的位置选项)。如果有新的选项,您应该设置它们(或者如果您对默认值感到满意,则保留它们),然后按下' c '重新配置,并继续此过程,直到没有新的选项。一旦这个迭代过程完成,就会有新的命令可用:Generate和Exit。你现在可以按下' g '让CMake生成新的makefile并退出。如果将来需要更改构建选项,只需重新运行ccmake并按照上面的说明操作。

        使用交互式向导模式(cmake -i)自定义构建。在某些平台上,ccmake提供的基于终端的接口可能无法工作。在这种情况下,尝试使用-i(交互式向导)选项cmake。一旦你这样做,它会问你是否想要看到高级选项。大多数用户不需要更改高级选项。接下来,CMake会问你一系列问题。对于每个选项,将有一行描述其功能和默认(当前)值。大多数情况下,CMake将能够生成可接受的默认选项。然而,在某些情况下,例如当一个库(如OpenGL库)不在预期的位置时,你必须告诉CMake正确的设置。此外,默认情况下,不会创建Tcl、Python和Java的绑定。如果你想支持这些语言中的一种或多种,你必须打开适当的VTK_WRAP_XXX选项,如果有必要,告诉CMake必要的库和头文件的位置。一旦你回答了所有的问题,你所有的makefile将被生成和VTK将准备构建。如果将来需要更改构建选项,可以在向导模式下重新运行CMake并再次回答所有问题。

编译源代码

一旦CMake完成运行并生成了必要的make文件,你可以输入make, VTK就应该编译了。一些make工具,如GNU make (gmake)支持并行构建(例如,带有-j选项的gmake)。尽可能使用parallel make,即使是在单处理器系统上,因为通常进程是IO绑定的,处理器可以处理多个编译。如果遇到问题,您可能希望加入vtkusers邮件列表(请参阅第6页的“附加参考资料”)并在那里寻求帮助。Kitware也提供商业支持。

        如果您计划为多个体系结构构建VTK,那么您可以为每个体系结构复制整个VTK树并遵循上面的说明,或者您可以拥有VTK源树的一个副本并在单独的目录中为每个体系结构生成目标代码,库和可执行文件。这种方法需要为每个体系结构(如vtk-solaris)创建一个新的构建目录(确保您有足够的磁盘空间)。假设新目录是在VTK源代码目录旁边创建的,将directory (cd)更改为该目录,然后运行CMake,类似于以下示例:

cd /yourdisk

ls (output is: VTK vtk-solaris vtk-sgi)

cd vtk-solaris

cmake -i ../VTK

或者

ccmake ../VTK

这将在vtk-solaris目录中创建makefiles。您现在可以按照前一节中的说明编译VTK。

安装VTK

        现在已经构建了VTK,可执行文件和库将位于构建目录下的子目录bin/中。如果您计划与UNIX系统上的多个开发人员共享构建,并且您拥有根权限,那么运行make install命令通常是一个好主意。这将安装VTK到/usr/local,除非你改变构建选项CMAKE_INSTALL_PREFIX到另一个位置。运行make install将复制您需要编译的所有文件,并将VTK运行到其他用户可以共享的目录中。

        在UNIX下构建和安装VTK的部分到此结束。如果您需要更多关于CMake的信息,请访问http://www.cmake.org或从Kitware (http://www.kitware.com/products/cmakebook.html)购买Mastering CMake书籍。本软件指南的第3章提供了更多关于如何运行示例和创建自己的应用程序的细节。

本书为英文翻译而来,供学习vtk.js的人参考。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vtk用户指南》是一本介绍Visualization Toolkit(VTK)的使用和应用的指南,它提供了VTK的详细说明和说明,以便用户可以有效地利用VTK进行科学和工程可视化。该指南涵盖了VTK的各个方面,包括数据处理、可视化和交互式操作等内容。 VTK是一个强大的开源软件库,用于开发和呈现三维图形和图像的应用程序。它广泛应用于医学成像、地质学、气象学、工程建模等领域,因此《vtk用户指南》对于从事这些领域的科研人员和工程师来说是一本非常有价值的参考书籍。 该指南的中文版PDF能够帮助中国的VTK用户更方便地了解和使用VTK,提高他们的工作效率和成果。通过阅读《vtk用户指南》中文版PDF,用户可以学习VTK的基本概念、算法和数据结构,了解VTK的特点和优势,并掌握VTK的基本操作和高级功能。 此外,该指南还介绍了VTK在实际项目中的应用示例,帮助用户更好地理解VTK在科学和工程领域的实际价值和作用。通过学习《vtk用户指南》,用户可以更好地利用VTK进行数据的可视化和分析,为自己的研究和项目提供更好的支持和帮助。 总之,《vtk用户指南》中文版PDF是一本非常有用的参考资料,对于VTK用户和开发者来说具有重要的意义。阅读该指南能够帮助用户更好地了解和掌握VTK的使用和应用,为他们的工作和研究提供更好的支持和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值