Я пытаюсь создать решение в Visual C ++, где у меня есть внешний интерфейс, который ссылается на проект DLL, который я создал. В проекте DLL я ссылаюсь на статическую библиотеку (которую я не написал), которая имеет статические объекты и определения. Все хорошо, но у меня проблемы с компоновкой.
У меня есть пара вопросов. Во-первых, я должен получать неразрешенные символы только для объектов, на которые я ссылаюсь в интерфейсе, которые не экспортируются, верно? Я хочу, чтобы библиотека DLL была единственным интерфейсом к статической библиотеке и не имела прямой ссылки на какую-либо ее часть во внешнем интерфейсе, и все же я получаю ряд неразрешенных символов из этой библиотеки. Там символы кажутся включенными и, по крайней мере, некоторые из них не связаны напрямую с проектом DLL. Я подозреваю, что это связано со статическими объявлениями в статической библиотеке, но как я могу справиться с ними?
Некоторые из неразрешенных ошибок символов:
2>AnalysisVis.obj : error LNK2001: unresolved external symbol "public: __thiscall SharkException::SharkException(char const *,int,char const *)" (??0SharkException@@$$FQAE@PBDH0@Z)
2>AnalysisVis.obj : error LNK2001: unresolved external symbol "public: static class Bernoulli Rng::coinToss" (?coinToss@Rng@@2VBernoulli@@A)
2>AnalysisVis.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall ChromosomeT<bool>::operator<(class Chromosome const &)const " (??M?$ChromosomeT@_N@@$$FUBE_NABVChromosome@@@Z)