未加载Dyld库:原因:未找到图像

时间:2015-01-22 17:34:15

标签: c++ xcode macos plot

我知道之前已经提出过有关此问题的问题,但我无法使用他们的任何解决方案解决我的问题。我试图在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?

1 个答案:

答案 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) ; 
}

它产生了这个输出: Dislin Output

那就是我所在的地方。希望这可以在某些方面帮助某人。