我知道之前已经提出过有关此问题的问题,但我无法使用他们的任何解决方案解决我的问题。我试图在Xcode上使用Mac上的DISLIN绘图库。 (OS:Yosemite,Xcode Ver:6.1.1)。
我目前正在尝试运行一个非常简单的测试程序:
#include <stdio.h>
#include <iostream> // Required by DISLIN!
#include "dislin.h" // Required by DISLIN! Includes the
// plotting package
using namespace std;
int main(int argc, char *argv[])
{
int numberOfPoints = 2;
float x[2] = {0, 1};
float y[2] = {0, 2};
cout << x << y << endl ;
qplot(x, y, numberOfPoints);
}
尝试运行时遇到的错误是:
dyld: Library not loaded: /usr/local/lib/libdiscpp.10.dylib
Referenced from: /Users/user/Library/Developer/Xcode/DerivedData/phys239_a2-blbdrjqdqxewuwfvvdxelytbfmzs/Build/Products/Debug/phys239_a2
Reason: image not found
Program ended with exit code: 9
程序编译得很好,但它不会运行。我已经从dislin网站(dislin.de)和openbotif通过homebrew安装了Dislin。我将项目与dislin和openmotif库(分别位于/ usr / local / dislin /和/usr/local/Cellar/openmotif/2.3.4/lib)相关联。
有没有人有这方面的经验?或者,有没有人能够让迪斯林以前使用Xcode? p>
答案 0 :(得分:0)
所以,整个事情的关键在于使用Xcode运行dislin,看起来我终于取得了一些进展,因为我可以产生一个实际的情节。希望没有新的惊喜。
为了实现这一目标,我所做的就是这样。
下载Dislin(来自dislin.de的dislin-10.5.darwin.intel.64.tar.gz,在下载部分)
确保您拥有最新的X11安装。这是我得到它的地方。 (http://xquartz.macosforge.org/landing/)
使用自制软件,我安装了openmotif。这是dislin所要求的。我使用了以下命令:
brew install https://gist.githubusercontent.com/steakknife/60a39a32ae84e12238a2/raw/openmotif.rb
我在这里找到:https://gist.github.com/steakknife/60a39a32ae84e12238a2
然后我将以下几行添加到./bash_profile
export DISLIN=/usr/local/dislin
DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/dislin:/usr/local/Cellar/openmotif/2.3.4/lib/:/opt/X11/lib
PATH=$PATH:$DISLIN/bin
我知道整个DYLD_LIBRARY_PATH可能不是最好的,我老实说甚至不知道它在我的安装中是否真的重要,但它现在正在工作,我不会尝试弄乱它。
安装dislin。切换到您下载到的文件夹并运行命令./INSTALL
现在打开Xcode并启动一个新的控制台应用程序。您需要确保可以正确链接这些库。在“构建设置”中,我添加了/usr/local/dislin/real64
的标题搜索路径(有两个'dislin.h'文件。如果我不使用此文件夹中的那个,我看到的结果是垃圾。)对于库搜索路径,我添加了'/ usr / local / dislin / lib and
/ usr / local / Cellar / openmotif / 2.3.4 / lib`
在'Build Phases'中添加上面两个库文件夹中的库。
然后我运行了以下程序:
#include <iostream>
#include <dislin.h>
double f(double aX)
{
return aX * aX ; // Function to be plotted
}
int main()
{
double x[11], y[11] ;
double del = 0.1 ;
for( int i = 0 ; i < 11 ; i++)
{
x[i] = i * del ;
y[i] = f(x[i]) ;
}
metafl("PDF") ;
disini() ;
name( "X-Axis", "x" ) ;
name( "Y-axis", "y" ) ;
qplsca(x, y, 11) ;
}
它产生了这个输出:
那就是我所在的地方。希望这可以在某些方面帮助某人。