Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
djamshud
Сообщений: n/a
#1

Обратная линковка - C++

23.11.2009, 23:18. Просмотров 600. Ответов 0
Метки нет (Все метки)

Доброго времени суток.

Интересует, как организовать сабж в windows. Пример (ниже опишу, что к чему):

***shared_header.h:
C++
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
#include<stdio.h>
class sharedClass{
public:
sharedClass();
};
 
***plugin.cpp -> libplugin.dll
#include"shared_header.h"
extern "C"
void loader(){
printf("Plugin is loaded!\n");
new sharedClass;
}
 
***base.cpp -> base.exe
#include"shared_header.h"
sharedClass::sharedClass(){
printf("Shared class is loaded!\n");
}
 
int main(){
/*
Немного кода, который загрузит и вызовет функцию loader из libplugin.dll
*/
return 0;}
Т.е., что происходит. Говорим, что есть общий класс sharedClass. Хедер общий, реализация в base.exe. Загружаем библиотеку libplugin.dll и вытаскиваем из нее функцию. Видим
Plugin is loaded!
Shared class is loaded!

И это прекрасно работает... в линуксе. При линковке динамической библиотеки там достаточно определений классов и функций, а реализация подцепляется на лету, во время загрузки библиотеки. В винде при линковке плагина требуется реализация конструктора расшаренного класса. Т.е. фактически нужно экспортировать ряд полей из программы в загруженную библиотеку.

На одном форуме советовали повозиться с .def файлом, но у меня в итоге так ничего и не получилось. Если кто знает правильное решение проболемы (без выноса sharedClass в отдельную библиотеку), буду благодарен за помощь.

P.S. Компилятор mingw, хотя не уверен, что дело в нем. Линковщик то один...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2009, 23:18     Обратная линковка
Посмотрите здесь:

Линковка - C++ Builder
Проблема с линковкой. Приложение компилируется, а когда доходит до стадии линковки выводит ошибку: Fatal: Access violation. Link...

линковка шаблона - C++ Linux
линковка шаблона #ifndef intrusive_list__HHHH #define intrusive_list__HHHH struct link_err { string s; link_err(const...

Линковка либов) - C++ Linux
#include &lt;cstdio&gt; #include &lt;unistd.h&gt; #include &lt;pthread.h&gt; void func1(void) { for (int i = 0; i &lt; 5; i++) { ...

Линковка, модель разделения и т.д - C++ Builder
Здраствуйте. Стыдно за вопрос. Пытаюсь выполнить модель разделения на C++ Builder 6. Данный файл (hdata.hpp) подключается явно. ...

Линковка шаблонных функций - C++ Builder
Доброе время суток. Столкнулся с проблемой линковки шаблонной функции. Ситуация следующая - есть заголовочный файл, в котором описано...

Линковка DLL с произвольным размещением - Visual C++
Подскажите, где в VS можно задать предопределенное (не стандартное, а скажем, C:\Program Files\Program1\Bin) расположение линкуемой DLL.

IDE и статическая линковка (UNIX) - Кроссплатформенная разработка
Подскажите, пожалуста кто сталкивался с написанием портативных программ (библиотеки вместе с приложением). Было испробыванно С# - не...

Статическая линковка и ординальные функции - Visual C++
Как импортировать из DLL в приложение функцию по ее номеру при статической линковке?

Curl и MS Visual C++ 2013 статическая линковка - C++
Компилирую библиотеку из папки &quot;curl-7.41.0\projects\Windows\VC12&quot; (LIB Release). Подключаю ее в проект с помощью: #pragma...

с++ embedded - линковка без стандартных библиотек - Visual C++
с++ такой с++. следующий код (воспринимайте как теоретическое исследование)) #include &lt;windows.h&gt; class class1 { public: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru