Использование корневых библиотек Linux в Windows - PullRequest
2 голосов
/ 15 июля 2011

Мне приходится работать с библиотеками c ++ на основе ROOT cern. Эти библиотеки были написаны с использованием среды Linux и k dev, и теперь я должен использовать эти библиотеки в Windows с Visual Studio. Сначала я просто пытаюсь скомпилировать некоторые заголовки .h и некоторые исходные коды .cpp в Visual c ++ для создания DLL. эти файлы скомпилированы без проблем в Linux.

Итак, у меня проблема с генерацией работающей DLL, которую я могу использовать позже в csharp.

Ошибки, которые я получаю, являются ошибками LNK, хотя я считаю, что добавил в компоновщик необходимый .lib, который является библиотеками, связанными с ROOT.

Ошибки следующие:

Error 1 error LNK2001: unresolved external symbol "public: virtual void __thiscall Directory::ShowMembers(class TMemberInspector &)" (?ShowMembers@Directory@@UAEXAAVTMemberInspector@@@Z) 

Error 2 error LNK2001: unresolved external symbol "public: virtual void __thiscall Directory::Streamer(class TBuffer &)" (?Streamer@Directory@@UAEXAAVTBuffer@@@Z) 

Error 3 error LNK2019: unresolved external symbol "public: static class TClass * __cdecl Directory::Class(void)" (?Class@Directory@@SAPAVTClass@@XZ) referenced in function "public: virtual class TClass * __thiscall Directory::IsA(void)const " (?IsA@Directory@@UBEPAVTClass@@XZ) 

Я бы очень признателен, если бы кто-то мог указать на некоторые подсказки!

Ответы [ 3 ]

1 голос
/ 15 июля 2011

К сожалению, это невозможно.Вы должны перекомпилировать эти библиотеки в Windows, если у вас есть исходный код.В противном случае обратитесь к поставщику за версией Windows.

0 голосов
/ 15 июля 2011

вам придется просмотреть источник этих библиотек (не проблема, поскольку ROOT является открытым исходным кодом) и найти определения для этих методов.Это может показаться очевидным, но кажется, что эти функции должны быть определены в другом месте

0 голосов
/ 15 июля 2011

Вот несколько ссылок, которые могут быть вам полезны.

http://www.cyberciti.biz/faq/how-do-i-create-files-needed-to-build-and-use-dlls-under-linux/

http://www.kegel.com/crosstool/

Удачи

...