Mathematica中用Needs调用外部程序包时失败?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mathematica中用Needs调用外部程序包时失败?相关的知识,希望对你有一定的参考价值。
1. P1是用Needs函数调入程序包时给出的结果。Mathematica可以找到这个程序包的名字,但是调用不了。2. P2是储存的程序包的情况。其中除了主文件之外,Kernel和PacletInfo两个文件完全按照系统预置程序包的格式写的,没有效果。3. 如果打开主程序包本身运行一次,再进入Mathematica Notebook再用Needs函数调用就成功了。不过每次都这么操作很麻烦。4. 主程序包当中的函数全部用:=定义的,按说应该是正确格式。函数内部只有变量赋值。举例格式:Fun[_ _ _]:=($$gravity=9.8;) 不知道这样的格式有无错误。5. 本人对Mathematica不是很精通,也不打算研究太深,仅仅是当计算器用而已。所以也可以不用告诉我原因,只需要告诉我怎么做就好。
……手机上不方便细查,但是,你这程序包是不是根本没安装。安装可以通过顶部菜单进行,按照指示一步步走就行了。你这个程序包好像是通过Paclet分发的,那应该也可以用PacletInstall,程序包的发布者应该会在发布页面讲它的安装方法,或者你上stackexchange搜搜应该也行,或者如果你是12.1版本,直接在自带帮助里也能搜到相关讲解。
还有Mathematica本身带了一个物理常数的程序包PhysicalConstants`,后来又引入了Quantity等一系列函数,12版本之后还可以通过Entity函数来调物理常数,你完全可以试试它们。 参考技术A 这是他这个程序包设计的问题。一般来说Needs一个上下文的时候,会检查这个上下文是不是已经存在于$Packages,如果不存在就Get这个上下文,之后还会检查这个上下文是不是被创建了。
如果检查发现没被创建,就给你这么个警告。
可能这程序包设计的时候就不打算创建这个上下文,所以你用Get加载就行了,不需要Needs。
外部函数调用:更换机器时出现错误1097
我有一个LV程序,它通过我通过VI包管理器(libxml2)下载的包装器函数调用外部库。此程序在计算机A(Win7,LV2015 32位)上正常工作。由于它是可移植的,我已经将它安装在运行良好的各种计算机(Win7)上,除了计算机B.在那里,它在调用外部库时抛出错误1097。显然安装了libxml2包,我可以在函数选板上看到它。可能是由于Windows的版本不同,还是由于Labview 32位和64位之间的冲突?我用LV 32位打开并运行我的程序。
计算机A:Labview 2015(32位)Windows 7
电脑B:
Labview 2015(32位)和Labview 2015(64位)Windows 10
很可能需要在32位和64位labview vi之间更改dll的调用参数,这表示错误1097.如果你有指针或需要保留内存,这些可以在64位和32位之间有不同的大小变种。
如果提供了更多详细的错误说明,则需要显示更多帮助代码。
我能够解决这个问题:可能存在竞争条件,有时候DLL会出现不合逻辑的随机输入。它与系统无关。
以上是关于Mathematica中用Needs调用外部程序包时失败?的主要内容,如果未能解决你的问题,请参考以下文章
在JAVA中用JNI调用C++程序报错,说找不到所依赖的库。
在LaTeX中调用Mathematica代码求解绘图(WolframLanguage)