У меня 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
Как исправить эту ошибку?