- 博客(23)
- 资源 (2)
- 收藏
- 关注
原创 轻量级与定制化:两种API方案解锁DeepSeek-R1的办公潜能
本文基于硅基流动提供的APIkey,通过设置Chatbox和开发MS Word宏调用DeepSeek-R1,仅供大家参考。任何新生事物对世界、国家、社会和个人的影响总是有好有坏的,如何趋利避害也是值得认真思考的课题。
2025-02-22 13:53:39
987
原创 Fortran调用C++动态链接库实践篇
本文通过Fortran对C++的动态链接库的调用,实现了Fortran与C++之间内置变量、派生变量、子例程定义的方法调用,在基本操作的基础上,还实现了Fortran对C++定义的类使用,通过这些常见场景的实现,展现了Fortran/C++混合编程的魅力。
2023-06-26 11:20:18
1669
原创 CGAL-Triangulation中的单元和面的关系
CGAL提供的数据结构一方面能够满足对几何体的几何信息和拓扑的描述,另一方面也要照顾算法灵活性和广泛性的需要,要能够满足算法的需要。本文通过一个示例去查看CGAL-Triangulation中的单元和面的关系。...
2022-08-07 11:52:58
791
原创 CGAL预定义内核转换的问题
为了用户方便,CGAL针对笛卡尔坐标计算提供了5种预定义内核常用的是前三种,特别是第一种和第二种,但是第一种和第二种不会混用,但是第二种和第三种可能会出现混用的情况,因而会有内核转换的问题。...
2022-07-27 14:54:29
819
1
翻译 空间点集的三角剖分工具——四面体生成器(TetGen)和三维三角剖分包(CGAL)
TetGen - Tetrahedral GeneratorTetGen是一款四面体网格生成器。它创建多面体域的三维三角剖分。它能生成具有良好形状的单元网格,单元大小适合于几何特征或用户提供的尺寸函数。它在科学计算的各种应用中都有应用,如计算机图形学(CG)、计算机辅助设计(CAD)、几何处理(参数化和计算机动画)和物理模拟(有限元分析)。TetGen的功能 对于一组3d(加权)点,TetGen生成Delaunay和 weighted Delaunay四面体网格以及它们的对偶,Voronoi图
2022-05-19 10:48:42
7407
1
翻译 Cmake中文教程(十二)【2022.05.12】
第 12 步:打包调试和发布注意:此示例对单配置生成器有效,不适用于多配置生成器(例如 Visual Studio)。默认情况下,CMake 的模型是构建目录只包含一个配置,无论是 Debug、Release、MinSizeRel 还是 RelWithDebInfo。但是,可以将 CPack 设置为捆绑多个构建目录并构建一个包含同一项目的多个配置的包。首先,我们要确保调试和发布版本对将要安装的可执行文件和库使用不同的名称。让我们使用d作为调试可执行文件和库的后缀。CMAKE_DEBUG_PO
2022-05-12 21:58:19
911
翻译 Cmake中文教程(十一)【2022.05.12】
# 第 11 步:添加导出配置在本教程的“安装与检测”一节中,我们添加了 CMake 安装项目的库和头文件的功能。在“封装与安装”一节中 ,我们添加了封装信息的功能,以便将其分发给其他人。下一步是添加必要的信息,以便其他 CMake 项目无论是从构建目录、本地安装还是封装时都可以使用我们的项目。第一步是更新我们的install(TARGETS)命令不仅可以指定 一个DESTINATION,还可以指定EXPORT。EXPORT关键字生成一个 CMake 文件,其中包含从安装树导入 install
2022-05-12 21:36:11
1930
2
原创 基于CGAL、Qt5两层嵌套动态链接库的Cmake实现
基于CGAL、Qt5两层嵌套动态链接库的Cmake实现1. 问题由来因需要开发了一款基于CGAL的处理三维几何的子程序(简称子程序B),该子程序B被主程序A调用,我们知道CGAL还可以调用Qt5库用于图形显示,因此为了实现这一目标,设想利用Cmake制作一个可供主程序A调用的dll,此dll可调用CGAL,而CGAL又可调用Qt5。程序A、B、CGAL、Qt5之间的流程:主程序A->子程序B->CGAL->Qt5Cmake实现子程序B封装成B.dll后:主程序
2022-05-12 11:53:48
722
翻译 Cmake中文教程(十)【2022.05.10】
第 10 步:添加生成器表达式Generator expressions在构建系统生成期间进行评估,以生成特定于每个构建配置的信息。Generator expressions在许多目标属性的上下文中是允许的,例如LINKLIBRARIES, INCLUDEDIRECTORIES,COMPILEDEFINITIONS和别的。它们也可以在使用命令填充这些属性时使用,例如 targetlinklibraries(),targetincludedirectories(), targetcompile_def
2022-05-10 21:53:45
312
翻译 Cmake中文教程(九)【2022.05.10】
第 9 步:选择静态或共享库在本节中,我们将展示如何使用BUILDSHAREDLIBS变量控制add_library()的默认行为, 并允许控制如何构建没有显式类型 ( STATIC、SHARED、 MODULE或OBJECT)的库。为此,我们需要添加BUILDSHAREDLIBS到顶层CMakeLists.txt。我们使用option()命令,因为它允许用户有选择地选择该值是否应该是ON或OFF。接下来我们将重构MathFunctions成为一个用mysqrt或sqrt封装起来的真正的库,而不
2022-05-10 21:25:22
445
翻译 Cmake中文教程(八)【2022.05.10】
第 8 步:添加对测试仪表板的支持添加对向仪表板提交测试结果的支持很简单。我们已经在“测试支持”中为我们的项目定义了许多测试。现在我们只需要运行这些测试并将它们提交到仪表板。为了包括对仪表板的支持,我们需在顶层 CMakeLists.txt包含 CTest模块。用:*CMakeLists.txt* # enable dashboard scriptinginclude(CTest)去替代:*CMakeLists.txt* # enable testingenable_tes
2022-05-10 21:04:58
387
翻译 Cmake中文教程(七)【2022.05.10】
第 7 步:打包安装程序接下来假设我们想将我们的项目分发给其他人,以便他们可以使用它。我们希望在各种平台上提供二进制和源代码分发。这与我们之前在“安装与测试”中进行的安装有点不同,在那一节中,我们正在安装从源代码构建的二进制文件。在此示例中,我们将构建支持二进制安装和包管理功能的安装包。为此,我们将使用 CPack 创建平台指定的安装程序。具体来说,我们需要在顶层CMakeLists.txt文件的底部添加几行。*CMakeLists.txt* include(InstallRequiredSys
2022-05-10 20:46:45
254
翻译 Cmake中文教程(六)【2022.05.10】
第 6 步:添加自定义命令和生成的文件假设,出于本教程的目的,我们决定永远不想使用平台log和exp函数,而是想生成一个预先计算的值表以在mysqrt函数中使用。在本节中,我们将创建表作为构建过程的一部分,然后将该表编译到我们的应用程序中。首先,让我们删除 MathFunctions/CMakeLists.txt中的对log和exp函数的检查。然后从mysqrt.cxx 中删除HAVEEXP和HAVELOG检查。同时,我们可以删除.#include <cmath>在MathFunct
2022-05-10 20:27:08
280
翻译 Cmake中文教程(五)【2022.05.10】
第 5 步:添加系统自省让我们考虑在我们的项目中添加一些代码,这些代码取决于目标平台可能没有的功能。对于这个例子,我们将添加一些代码,这些代码取决于目标平台是否具有log和exp 功能。当然,几乎每个平台都有这些功能,但在本教程中假设它们并不常见。如果平台有log,exp那么我们将使用它们来计算函数 mysqrt中的平方根。我们首先使用 MathFunctions/CMakeLists.txt中的 CheckSymbolExists模块。在某些平台上,我们需要链接到 m库。如果最初没有找到log,e
2022-05-10 20:08:05
182
翻译 Cmake中文教程(四)【2022.05.10】
第 4 步:安装和测试现在我们可以开始为我们的项目添加安装规则和测试支持。安装规则安装规则相当简单:对于 MathFunctions,我们要安装库和头文件,而对于应用程序,我们要安装可执行文件和配置的头文件。所以在 MathFunctions/CMakeLists.txt最后我们添加:*MathFunctions/CMakeLists.txt* install(TARGETS MathFunctions DESTINATION lib)install(FILES MathFunct
2022-05-10 19:46:52
239
翻译 Cmake中文教程(三)【2022.05.10】
第 3 步:为库添加使用要求使用要求允许更好地控制库或可执行文件的链接和包含行,同时还可以更好地控制 CMake 中目标属性的传递。利用使用要求的主要命令是:target_compile_definitions()target_compile_options()target_include_directories()target_link_libraries()让我们从 Adding a Library重构代码以使用现代 CMake的使用要求方法。我们首先声明,任何链接到Math
2022-05-10 19:19:49
262
翻译 Cmake中文教程附完整代码(二)【2022.05.10】
第 2 步:添加库现在我们将在我们的项目中添加一个库。这个库将包含我们自己的计算平方根的实现。然后可执行文件可以使用这个库而不是编译器提供的标准平方根函数。对于本教程,我们将把库放到一个名为MathFunctions子目录中. 这个目录已经包含了一个头文件 MathFunctions.h,和一个源文件mysqrt.cxx。源文件有一个调用函数mysqrt,它提供与编译器函数sqrt类似的功能。将以下仅一行命令的CMakeLists.txt文件添加到MathFunctions 目录中:*Ma
2022-05-10 19:04:57
565
翻译 Cmake中文教程附完整代码(一)【2022.05.10】
第 1 步:基本起点最基本的项目是从源代码文件构建的可执行文件。对于简单的项目,只需要一个三行CMakeLists.txt文件。这将是我们教程的起点。在目录中创建一个 CMakeLists.txt文件,Step1如下所示:*CMakeLists.txt* cmake_minimum_required(VERSION 3.10)# set the project nameproject(Tutorial)# add the executableadd_executable(Tutori
2022-05-10 17:35:40
909
原创 C++与Fortran动态链接库之间的数据传递
前一篇文章讨论了C++程序对Fortran动态链接库中的函数调用,其数据交换主要在Fortran程序之间,而没有出现在两种语言之间。本节将探讨C++与Fortran动态链接库之间的数据交换。数据交换有多种方式,例如通过函数的参数传递、指针、全局变量等等。C++与Fortran这两种语言之间一般变量(变量或数组等)的数据传递比较容易,但自定义数据类型的数据交换则略显困难,主要是因为两种语言对于自定义数据类型的内存管理方式存在差异(?有待进一步考证)。示例如下。1、Fortran90 程序在Fo
2022-05-09 19:51:22
1526
原创 C++调用Fortran动态库说明
一、 C++直接调用Fortran动态库函数1.建立Fortran动态库项目须在Fortran程序文件中添加Compiler Directives语句:!DEC$ ATTRIBUTES DLLEXPORT::(程序名)程序示例如下图所示。2.生成.lib和.dll文件编译,链接(即生成解决方案)Fortran源代码生成相应的.lib和.dll库文件。3.编辑并运行C++程序建立C++控制台项目,项目->属性->链接器->输入->附加依赖项 中加
2022-05-09 19:48:14
2289
原创 C++生成dll和调用dll以及利用CMAKE生成c++ dll的问题
一、dll生成1、设置项目属性:打开vs,建立空项目,在项目的 配置属性->常规->项目默认值->配置类型 修改为:动态库(.dll)2、准备文件:填写头文件和源文件,注意头文件的声明,源文件正常。—————————————————————————————————————| 头文件: ...
2022-05-09 19:33:35
5360
原创 关于ANSYS安装中出现Invalid License file the FLexlm ID in thefile does not match the system Flexlm ID的解决方法
问题可能是因为计算生成License文件时默认使用计算机内第一个(而不是正在使用的)网络地址所致,解决方法:1. 打开License.txt2. 点击“开始”——点击“运行”——输入“cmd”回车——输入“ipconfig/all”回车3. 看看License.txt文件第一行是不是和上面出现的某一物理地址相同涂黑的部分是计算机名,这个在安装时必须和”我的电脑”——”...
2018-07-14 18:06:25
15826
fortran 90 for engineers and scientists
2009-06-14
Fortran 95
2009-06-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人