Point72 / csp

csp is a high performance reactive stream processing library, written in C++ and Python
https://github.com/Point72/csp/wiki
Apache License 2.0
196 stars 34 forks source link

Visibility too restrictive for externally defined C++ nodes & adapters #363

Open wrieg123 opened 1 week ago

wrieg123 commented 1 week ago

Describe the bug This PR introduced hidden visibility for most symbols in the build on non-windows machines. Unfortunately, this hides too many symbols that would be used in external C++ adapters and node definitions.

Error Message (from build then run of the c++ example nodes, for instance) symbol not found in flat namespace __________

robambalu commented 1 week ago

Can you paste the actual link error that you hit

wrieg123 commented 1 week ago
symbol not found in flat namespace '__ZN3csp4Node11createAlarmERNSt3__110shared_ptrIKNS_7CspTypeEEEm'
symbol not found in flat namespace '__ZN3csp4EnumINS_7CspType10TypeTraitsEE7mappingEv'
symbol not found in flat namespace '__ZN3csp12CspArrayType6createERKNSt3__110shared_ptrIKNS_7CspTypeEEEb'

createAlarm from a node definition. While Enum and CspArrayType are from the partially defined func's used in the various message mappers.

wrieg123 commented 1 week ago

From this example

symbol not found in flat namespace '__ZN3csp14CycleStepTable8scheduleEPNS_8ConsumerE'
AdamGlustein commented 1 week ago

Thanks Will - I can repro this using our CPP examples. As @svatasoiu is out for the next 2 weeks I'll try to take a look at a fix.

wrieg123 commented 1 week ago

No problem. I'll try to produce a repro using an adapter or types sometime this week.