LINUX.ORG.RU

История изменений

Исправление EXL, (текущая версия) :

Да, ты прав, почему-то думал, что в глобальной области нет манглинга.

@Qweqwe, засунь сишные хедеры в extern "C" { }, например, в самом проекте или в хедере, как предложено выше.

Но если тебе нужна именно статическая библиотека на С++, без C-like интерфейса, то эта проблема просто отпадёт, переименовывай файл в *.cpp и компилируй его через g++-враппер, как в твоём примере выше:

$ cat libMy.cpp 
#include "libMy.h"

void func1()
{
    ;
}

$ cat libMy.h
extern void func1();

$ cat appMy.cpp 
#include "libMy.h"

int main() {
    func1();
}

$ g++ libMy.cpp -c -o libMy.o
$ ar cr libMy.a libMy.o
$ g++ appMy.cpp libMy.a
$ ./a.out

Исправление EXL, :

Да, ты прав, почему-то думал, что в глобальной области нет манглинга.

@Qweqwe, засунь сишные хедеры в extern "C" { }, например, в самом проекте или в хедере, как предложено выше.

Но если тебе нужна именно статическая библиотека на С++, без C-like интерфейса, то эта проблема просто отпадёт, переименовывай файл в *.cpp и компилируй его через g++-враппер, как в твоём примере выше.

Исходная версия EXL, :

Да, ты прав, почему-то думал, что в глобальной области нет манглинга.

@Qweqwe, засунь сишные хедеры в extern "C" { }, например, в самом проект или в хедере.

Но если тебе нужна именно статическая библиотека на С++, без C-like интерфейса, то эта проблема просто отпадёт, переименовывай файл в *.cpp и компилируй его через g++-враппер, как в твоём примере выше.