Search
Write a publication
Pull to refresh
0
0
Send message

Через ctypes можно вызывать с++ и без extern C. Но это будет "непереносимый код". Так как name mangling не стандартизован, и каждый компилятор будет генерировать свои экспортируемые имена функций. Если их подсмотреть в библиотеке — их также можно спокойно вызвать.
Под linux посмотреть имена функций можно с помощью nm. Для test.cpp без extern C будет примерно так:


nm -D libtestcpp.so

...
00000000000014cc T _Z12test_ret_intP4testi
00000000000013ab T _Z12test_ret_strP4testPc
00000000000014ee T _Z15test_ret_doubleP4testd
0000000000001370 T _Z8test_newv
...

И вот они, имена функций.


Под Windows можно посмотреть с помощью link /dump /exports libtestcpp.dll

Information

Rating
Does not participate
Registered
Activity