Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Force C++ linkage everywhere #266

Merged
merged 1 commit into from
Feb 3, 2024
Merged

Force C++ linkage everywhere #266

merged 1 commit into from
Feb 3, 2024

Conversation

joerowell
Copy link
Collaborator

I recently found myself trying to install fpylll on a machine with a more recent Cython version (holzfusion) and I ran into the linkage issue from #259.

It turns out that this issue is actually entirely because Cython did the wrong thing in the past (see this and this).

However, it is straightforward to force Cython to output functions with C++ linkage by setting the right macro (see this), and by then forcibly forward declaring the function with extern "C++" linkage. That's what this PR does.

The downside of this PR is it means that the callback functionality can't be called from C code anymore. Whilst I suspect that's of limited utility, we can fix that by forcing the callback helper function to have C linkage:

"""
extern "C" {
"""

cdef public void....

"""
}
"""

But that feels super hacky.

@joerowell
Copy link
Collaborator Author

joerowell commented Feb 2, 2024

@malb I haven't yet been able to test this on a lower Cython version, but I'm doing so right now. I'll let you know how it goes either way.

EDIT It works well here on Cython 0.29.3.

@malb
Copy link
Collaborator

malb commented Feb 3, 2024

Ace!!

@malb malb merged commit 50c3040 into master Feb 3, 2024
74 checks passed
@malb malb deleted the fix-extern-c branch February 3, 2024 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants