LNK2019 Использование статического члена со статическим связыванием - PullRequest
0 голосов
/ 26 июня 2018

У меня 3 проекта в Visual Studio 15. Первый (A) и второй (B) - динамические библиотеки, третий (D) - exe, в котором используются обе библиотеки. Задача состоит в том, чтобы связать первая библиотека статически.

Первая проблема, с которой я столкнулся, заключается в том, что, если я связываюсь с обеими библиотеками D, то одиночные тона, находящиеся в A, перестают быть в одной копии и появляются в 2 разных копиях в B и в D. Я решил - удалить ссылку из A в D, потому что все функции экспорта из A теперь находятся в B.

Вторая проблема. В А есть конструкции вида:

В шапке:

struct A_CLASS SomeClass {
  static const double someMember;
};

в кпп:

const double SomeClass::someMember = 14;

A_CLASS - это

#ifdef ( _BUILDA )
  #define A_CLASS         __declspec( dllexport )
#else
  #define A_CLASS         __declspec( dllimport )
#endif

Если я пытаюсь использовать SomeClass :: someMember в D - я получаю сообщение об ошибке LNK2019.
dumpbin показывает, что в B.lib и B.dll есть конструкция типа ?someMember@SomeClass@@2NA

Как исправить эту ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...