Cycling74 / min-devkit

Tools, documentation, and reference implementation of a Max Package built using the Min-API.
MIT License
156 stars 30 forks source link

_sym_dictionnary common_symbols linkage issue #211

Closed piotrus04 closed 8 months ago

piotrus04 commented 8 months ago

Hello,

I am using xcode 14.1 and mindevkit on mac 12.6.8

In a simple project, i use this function :

     if (object_classname_compare(ro, _sym_dictionary))

It compiles successfully when compiling for intel. But when i compile for arm, it fails. the error is :

Undefined symbols for architecture arm64: "__common_symbols", referenced from: pg_vj_ctlin_to_resolume::dictionary::'lambda'(std::1::vector<c74::min::atom, pg_vj_ctlin_to_resolume::dictionary::allocator > const&, int)::operator()(std::1::vector<c74::min::atom, pg_vj_ctlin_to_resolume::dictionary::allocator > const, int) const in pg.vj.ctlin.to.resolume.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

if i comment this if statement that calls the _sym_dictionnary define, the project succeeds to compile.

Do you have an idea how to correct this issue ?

all the best pierre

jeremybernstein commented 8 months ago

The quickest solution is to use gensym("dictionary") instead of _sym_dictionary.

You can also include commonsyms.c in your problem (although it sounds like a potential bug in the SDK if it's working on intel, but not on arm).

piotrus04 commented 8 months ago

Thank you for your answer, it works using the gensym method.

I couldn't confirm if it is a bug in the sdk as i am not expert at all in c code.

all the best