Boost.DLL не может найти символы в исполняемом файле, используя статически связанную библиотеку.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Boost.DLL не может найти символы в исполняемом файле, используя статически связанную библиотеку.

Сообщение Anonymous »

В настоящее время я пишу небольшое тестовое приложение для изучения статического связывания библиотек и доступа к их символам во время выполнения с помощью Boost.DLL. Я компилирую очень простую статическую библиотеку и связываю ее с очень простым приложением, используя MinGW-w64, и делаю это с помощью Makefile и mingw32-make. определяет класс A, который хранит и изменяет ссылку на int. Единственный модуль библиотеки B.cpp определяет подкласс A, называемый B, а также фабричный метод. Главный модуль определяет класс C, который хранит ссылку на экземпляр A и пытается получить доступ к символам, определенным в B.cpp, для хранения экземпляра B в C. Когда я пытаюсь запустить приложение, выходной файл успешно загружается, но программе не удается найти статически связанные символы.
A.hpp:

Код: Выделить всё

#pragma once

#ifndef A_HPP_
#define A_HPP_

#include 
#include 
#include 
#include 
#include 
#include 

class A {
protected:
int *_p;
public:
A(int *p = NULL);
virtual ~A() = default;

void setp(int *p);
int deref();

virtual void add();
};

#endif
B.cpp:

Код: Выделить всё

#include "A.hpp"

class B : public A {
public:
B();
~B();

void add();
};

const size_t B_SIZE = sizeof(B);
void B_get(void *addr) {
B *tmp = new B();
memcpy(addr, tmp, B_SIZE);
delete tmp;
}

B::B() {}
B::~B() {}

void B::add() {
if (_p != NULL)
*_p = *_p + 100;
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/71517617/boost-dll-cannot-find-symbols-in-executable-using-statically-linked-library[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»