EDSDK on Apple Silicon

Hi OF community,

Has anyone had recent experience trying to compile the EDSDK (Canon cameras SDK) on Apple Silicon? I have tried Elliot’s ofxCanon and Kyle’s ofxEdsdk in combination with different versions of the SDK –including the most recent one (13.16.10) and older ones, since both ofxCanon and ofxEdsdk code bases are a few years old now. But so far no luck. After a lot of trial and error and some bug fixing, my best results hit a similar error:

Undefined symbols for architecture arm64:
  "_EdsCloseSession", referenced from:
      ofxCanon::Device::close() in Device.o
  "_EdsCreateEvfImageRef", referenced from:
      ofxCanon::Device::getLiveView(ofPixels_<unsigned char>&) const in Device.o
  "_EdsCreateImageRef", referenced from:
      ofxCanon::Device::download(__EdsObject*) in Device.o
  "_EdsCreateMemoryStream", referenced from:
      ofxCanon::Device::getLiveView(ofPixels_<unsigned char>&) const in Device.o
      ofxCanon::Device::download(__EdsObject*) in Device.o

Seems it’s an architecture issue, but is the problem on the SDK side? I understand the latest SDK version should run on Apple Silicon.

Any hints?


Does it compile using Rosetta?

Hi @NickHardeman, thanks for your reply. No, unfortunately it does not compile. I get the exact same errors. For one of the ofxCanon examples, these are my current build settings:

Best result I get is with ofxEdsdk, using EDSDK v. 3.9.0 (from 2018), also built using Rosetta. The example app compiles, but then I get a bunch of error messages in terminal such as:

2023-03-17 13:19:27.024069+0100 exampleDebug[8316:71500] [general] Error loading /of_v0.11.2/examples/ofxEdsdk/example/bin/exampleDebug.app/Contents/Frameworks/EDSDK.framework/Versions/Current/DPPLibCom.bundle/Contents/MacOS/DPPLibCom (183): dlopen(/of_v0.11.2/examples/ofxEdsdk/example/bin/exampleDebug.app/Contents/Frameworks/EDSDK.framework/Versions/Current/DPPLibCom.bundle/Contents/MacOS/DPPLibCom, 0x0106): tried: /of_v0.11.2/examples/ofxEdsdk/example/bin/DPPLibCom' (no such file), '/usr/lib/system/introspection/DPPLibCom' (no such file, not in dyld cache), '/of_v0.11.2/examples/ofxEdsdk/example/bin/exampleDebug.app/Contents/Frameworks/EDSDK.framework/Versions/Current/DPPLibCom.bundle/Contents/MacOS/DPPLibCom' (mach-o file, but is an incompatible architecture (have 'i386', need 'x86_64')),

Looks like the DPP.framework is 32 bit (i386) and 64 bit is needed. Is there a way to remove it from the project? Based on the ofxCanon Readme, looks like it’s not needed for your setup

Optional : For 32-bit builds you can add the DPP.framework to your project

Have you tried creating a project using the Project Generator?

1 Like

Ok, finally some progress! Managed to compile an app using ofxCanon. If this helps anyone in the future, I did what @NickHardeman suggested: generated a project from scratch using Project Generator. Then copied the source code from one of the ofxCanon examples. Used EDSDK v. 3.16.10 (which does not use the DPP framework anymore). It only compiles using Rosetta, otherwise I get the errors described in the 1st post.

Thanks @NickHardeman for the suggestions!