powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Отключить декорирование имен в библиотеке (linux)
3 сообщений из 3, страница 1 из 1
Отключить декорирование имен в библиотеке (linux)
    #38946535
zladeyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо сделать *.so библиотеку для линухов. Юзаю eclipse luna 4.4.2

После сборки библиотеки функции меняют свое имя.

LIBRARY

Test.h
Код: plaintext
1.
2.
#define DLL_EXPORT __attribute__((visibility("default")))
extern "C" DLL_EXPORT int getVersion();



Test.cpp
Код: plaintext
1.
2.
3.
4.
#include "Test.h"
DLL_EXPORT int getVersion(int a) {
  return a;
}



EXECUTABLE
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
#include <iostream>
#include <dlfcn.h>
extern "C"  typedef int (*foo_t)(int);
foo_t foo = NULL;

using namespace std;

int main() {
	void* lib = dlopen("libTestLib.so", RTLD_LAZY);
	if(!lib)
	{
		cout << "Cannot load library: " << dlerror() << endl;
		return 0;
	}

	dlerror();

	foo = (foo_t) dlsym(lib, "getVersion"); // foo == 0
	foo = (foo_t) dlsym(lib, "_Z10getVersioni"); // валидное имя фун
	int i = foo(2);
	cout<<"i="<<i<<endl;


  return 0;

}



имя функции в полученной библиотеке смотрю с помощью nm -D

Уже пробовал юзать *.def файл:
Код: plaintext
1.
2.
3.
4.
 
LIBRARY libTestLib
EXPORTS
  getVersion


подключаю его в Cross G++ Linker -> Shared Library Settings -> DEF file name. Но при линковке
g++ -L/home/user/eclipse/workspace/TestLib/src -shared -Wl,--output-def=Test.def -o libTestLib.so src/Test.o
/usr/bin/ld: unrecognized option '--output-def=Test.def'

в чем может быть проблема? чего еще не хватает, чтобы использовать неисковерканные имена функций из библиотеки?
...
Рейтинг: 0 / 0
Отключить декорирование имен в библиотеке (linux)
    #38946561
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
extern "C" в Test.cpp добавь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отключить декорирование имен в библиотеке (linux)
    #38946651
zladeyka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Спасибо, помогло.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Отключить декорирование имен в библиотеке (linux)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]