Можно ли объявить внешнюю функцию без предоставления тела, а затем определить ее в другой DLL?C++

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

Сообщение Anonymous »

Я работаю над проектом C++, в котором хочу объявить функцию в одной DLL, но определить ее в другой. В частности, я хочу объявить функцию extern без предоставления тела (например, int MyFunction(); без { return 0; ), а затем предоставить ее фактическую реализацию в другой DLL. .
Возможно ли это, и если да, то как правильно с этим справиться?
Вот упрощенный пример того, что я думаю. пытаюсь достичь:

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

// Header file (in DLL A)
extern int MyFunction();  // Declaration without a body
Затем в другой DLL (DLL B):

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

// Source file (in DLL B)
int MyFunction() {
return 42;  // Actual implementation
}
Я использую Visual Studio 2022, CMake и C++23.

Что я пробовал?
Я объявил функцию как extern в одной DLL, не предоставляя тело, и попытался определить ее в другой DLL. Я ожидал, что компоновщик разрешит функцию в процессе сборки.

Чего я ожидал?
Я ожидал, что функция будет корректно разрешаться в разных DLL, что позволит связать объявление в одной DLL с определением в другой.

Что на самом деле произошло?
Однако компоновщик выдал ошибку, указывающую, что функция не найдена, хотя я определил ее в другой DLL. Я не уверен, что пропустил конкретный шаг настройки для перекрестного связывания DLL.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -then-defi
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Можно ли заранее объявить функцию, принимающую вектор неполного типа со значением по умолчанию?
    Anonymous » » в форуме C++
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • В С#, как мне использовать внешнюю C++ dll, расположенную в папке/lib/x64
    Anonymous » » в форуме C++
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • В С#, как мне использовать внешнюю C++ dll, расположенную в папке /lib/x64 [дубликат]
    Anonymous » » в форуме C#
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • В С#, как мне использовать внешнюю C++ dll, расположенную в папке /lib/x64 [дубликат]
    Anonymous » » в форуме C++
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Как dll расширения оболочки вызывает внешнюю программу
    Anonymous » » в форуме C++
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

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