George Garside Blog

If you find something useful on here, it's probably an accident.

Vector Magic Smoothing Image

About the problem

Since updating to OS X El Capitan, Vector Magic Desktop Edition crashes when you try to vectorise an image, at the smoothing image step.

Dyld Error Message:
  Symbol not found: _dgesv_
  Referenced from: /Applications/Vector Magic.app/Contents/MacOS/Vector Magic Desktop Edition
  Expected in: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib

This is due to the libBLAS.dylib being updated in El Capitan and Vector Magic not being updated for it. This also applies to macOS Sierra since the same updated dylib is present there too. You can fix this by replacing the libBLAS.dylib with an older version.

Also, since updating to Sierra, Vector Magic crashes on launch as Vector Magic Desktop Edition cannot be opened because of a problem. This is followed by a crash log with the following:

Application Specific Information:
dyld: launch, loading dependent libraries
DYLD_LIBRARY_PATH=/Applications/Vector Magic.app/Contents/MacOS:/Applications/Vector Magic.app/Contents/MacOS/ImageMagick-6.4.1/lib

Dyld Error Message:
  Symbol not found: _appleblas_i16gemm
  Referenced from: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib
  Expected in: /Applications/Vector Magic.app/Contents/MacOS/libBLAS.dylib
 in /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib

libBLAS.dylib

For both the solutions below, you will need a copy of libBLAS.dylib from Yosemite. If you have a Mac still running 10.10, you can grab it from the folder shown in the next step, otherwise you can download libBLAS.dylib here. This libBLAS.dylib is from OS X Yosemite 10.10.4 where Vector Magic works fine.

New solution: replace the dylib in Vector Magic

Thanks to a comment, an alternative solution is provided which doesn't require you to disable SIP, as you can replace the dylib within Vector Magic itself.

  1. Open Finder, press ⇧⌘G and paste /Applications/Vector Magic.app/Contents/MacOS/ImageMagick-6.4.1/lib
  2. Drag the replacement libBLAS.dylib from Yosemite (download from above) into this folder.
  3. In macOS Sierra: Run the following in Terminal: (triple-click to select the entire line)
    cp /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib /Applications/Vector\ Magic.app/Contents/MacOS/ImageMagick-6.4.1/lib

    This command copies libBNNS.dylib from the system's Accelerate framework to Vector Magic ImageMagick's lib folder. You are welcome to do this manually using the Finder instead of running this command as both achieve the same effect.

If this doesn't work, try the original solution provided below.

Original solution for El Capitan and prior: replacing the system dylib

The new solution applies to Sierra and prior, not just Sierra. You should try the new solution first before tampering with system files in this solution.

  1. Disable System Integrity Protection to permit OS X to modify system dylibs. If you don't disable SIP, you can't make changes to /System/Library/Frameworks/ which prevents you from modifying the dylib.
  2. Open Finder, press ⇧⌘G and paste /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/
  3. These next steps must be carried out exactly as shown here, otherwise this could leave you with a system which only boots to single user mode. You're making changes to system dylibs—have a backup you can access in single user mode. You can't just delete the dylib and replace it.
  4. Select libBLAS.dylib in the folder you just opened, hold ⌥ and drag it to the same folder.
    OS X Finder Copy file to same folder by holding alt and dragging the file
  5. Drag the replacement libBLAS.dylib which you obtained above or from another system to this folder and select Replace in the Finder dialog.
    Copy file in Finder replacing existing file

Vector Magic will work fine now! If you need to use the original libBLAS.dylib, you can replace it with the libBLAS 2.dylib. You can re-enable System Integrity Protection after verifying that Vector Magic works.

Need help?