Как использовать статическую библиотеку в решении с типом конфигурации, установленным на динамическую библиотеку ссылок? - PullRequest
1 голос
/ 13 мая 2019

Я создал два решения с визуальной студией.Я компилирую первый как статическую библиотеку.Я хочу использовать эту библиотеку во втором решении, которое является плагином для Maya.

Для второго решения я начал с файла шаблона hello world, который предоставляет Autodesk, и почти ничего не изменил, кроме добавления пути к моей библиотеке и его включения.Я продолжал получать эти ошибки:

Severity    Code    Description Project File    Line    Suppression State
Error   LNK1120 2 unresolved externals  ddRbf   C:\Users\daniele\Documents\workspace\ddPlugins\ddRbf\x64\Release\ddRbf.mll  1   

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol "public: void __cdecl ddMatrix::print(void)const " (?print@ddMatrix@@QEBAXXZ) referenced in function "public: virtual class Autodesk::Maya::OpenMaya20180000::MStatus __cdecl ddRbf::compute(class Autodesk::Maya::OpenMaya20180000::MPlug const &,class Autodesk::Maya::OpenMaya20180000::MDataBlock &)" (?compute@ddRbf@@UEAA?AVMStatus@OpenMaya20180000@Maya@Autodesk@@AEBVMPlug@345@AEAVMDataBlock@345@@Z)   ddRbf   C:\Users\daniele\Documents\workspace\ddPlugins\ddRbf\ddRbf.obj  1   

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol "public: __cdecl ddMatrix::ddMatrix(class std::vector<class std::vector<double,class std::allocator<double> >,class std::allocator<class std::vector<double,class std::allocator<double> > > >)" (??0ddMatrix@@QEAA@V?$vector@V?$vector@NV?$allocator@N@std@@@std@@V?$allocator@V?$vector@NV?$allocator@N@std@@@std@@@2@@std@@@Z) referenced in function "public: virtual class Autodesk::Maya::OpenMaya20180000::MStatus __cdecl ddRbf::compute(class Autodesk::Maya::OpenMaya20180000::MPlug const &,class Autodesk::Maya::OpenMaya20180000::MDataBlock &)" (?compute@ddRbf@@UEAA?AVMStatus@OpenMaya20180000@Maya@Autodesk@@AEBVMPlug@345@AEAVMDataBlock@345@@Z)   ddRbf   C:\Users\daniele\Documents\workspace\ddPlugins\ddRbf\ddRbf.obj  1   

После многих исследований и тестов я обнаружил, что, если бы я изменил свойства проекта> общие> настройки проекта по умолчанию> конфигурацию из динамически подключаемых библиотек к статическим, он скомпилировался бы, хотяв тот момент, когда я пытаюсь загрузить скомпилированный файл .mll в Maya, я получаю эту ошибку:

// Error: file: C:/Program Files/Autodesk/Maya2018/scripts/others/pluginWin.mel line 290: Unable to dynamically load : C:/Users/daniele/Documents/maya/plug-ins/ddRbf.mll

// Error: file: C:/Program Files/Autodesk/Maya2018/scripts/others/pluginWin.mel line 290:  (ddRbf) //  

Так что я думаю, что решение состоит в том, чтобы вместо этого скомпилировать первый файл .sln как библиотеку динамических ссылок, ноМне было интересно, есть ли способ просто использовать статическую библиотеку без необходимости делать этот шаг.

Спасибо!

1 Ответ

1 голос
/ 15 мая 2019

Я обнаружил проблему, я скомпилировал библиотеку как x86, а плагин - как x64.Я скомпилировал как x64 сейчас и работает.

...