Skip to content

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
@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.

3 participants