2

我必须使用基于 ROOT cern 的 c++ 库。这些库是用 Linux 环境和 k dev 编写的,现在我必须在带有 Visual Studio 的 Windows 中使用这些库。首先,我只是想在 Visual c++ 中编译一些头文件 .h 和一些源代码 .cpp 来创建一个 dll。这些文件在 Linux 中编译没有任何问题。

所以我在生成一个可以稍后在 csharp 中使用的工作 DLL 时遇到问题。

我得到的错误是 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) 

如果有人能指出一些提示,我将不胜感激!

4

3 回答 3

1

不幸的是,这是不可能的。如果您有源代码,则必须在 Windows 上重新编译这些库。否则,请向供应商索取 Windows 版本。

于 2011-07-15T17:38:00.650 回答
0

以下是一些可能对您有用的链接。

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

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

祝你好运

于 2011-07-15T17:56:59.120 回答
0

您必须浏览这些库的源代码(这不是问题,因为 ROOT 是开源的)并找到这些方法的定义。这听起来很明显,但似乎这些功能应该在其他地方定义

于 2011-07-15T19:18:51.113 回答