我使用CMake和VisualC++构建HyDE库。然后,在VC++中,我成功地创建了代码并构建了链接到HyDE.lib和HyDE头文件的可执行文件。
然后,我发现为了与我公司的其他人一起工作,最好在Eclipse中进行开发。对Eclipse知之甚少,我创建了一个默认的hello项目,删除了代码,然后将所有代码转储到src文件夹中。然后,我尝试更改包含、库路径和库,以反映在VC++中起作用的内容。此时,所有的东西似乎都编译好了,但是我在链接中遇到了一个错误:
/cygdrive/c/EclipseWorkspace/425HyDE/Debug/../src/FS5HyDE.cpp:16:未定义的对`HyDEAPI::HyDE::HyDE(HyDESystemModel::SystemModel*,bool的引用)‘
(还有更多类似的错误,都是指HyDE方法。)下面是在命令行运行的内容:
g++ -L"C:\Progra~1\boost\boost_1_42\lib“-L”-L"C:\EclipseWorkspace\HyDE“-o”425HyDE.exe ./src/Adapter_FS5HyDE.o ./src/MCDH_Module.o ./src/EPSCurrentSensor.o ./src/EPSFault.o ./src/FS5HyDE.o ./src/ Hyde观测.o./src/src/MCDH_module.o ./src/PDBComponent.o ./src/Power.Systemo./src/Program.o ./src/src Component.o ./src/Telemetry.o ./src/Telemetry.o Report.o-l:libboost_线程-gd 90-mt 1_42.l
这绝对不是一个库排序问题,因为我还有其他的排序(只有两个)。在VC++中编译VC++(它使用VC++编译器)和用g++编译我的程序有可能有问题吗?Eclipse CDT自动生成makefile的方式是否有问题?还有其他想法吗?
(注:对于类似的问题,似乎有很多其他的问题,但在阅读之后,我还没有找到一个解决我的问题的问题。)
发布于 2010-08-19 15:23:18
解决方案:由于HyDE库是用Visual编译器编译的,而且我试图构建与Cygwin工具链链接到它的代码,因此两个编译器使用不同的名称损坏方案,以便后者无法在HyDE库中找到预期的符号。我找到的唯一解决方案是用Cygwin工具链重新编译HyDE库,或者用任何编译器Visual编译新代码。(牢骚)
发布于 2010-08-18 19:20:01
典型的缺失符号错误。哪个源文件定义了:
HyDEAPI::HyDE::HyDE(HyDESystemModel::SystemModel*, bool)'?
这个文件被添加到编译中了吗?你能在你粘贴的命令行上找到它吗?
如果此符号属于外部库,则在使用-L添加目录路径后,可以使用-l添加要与程序链接的特定库的名称。
我建议您尝试在编译命令中添加到HyDE.lib的目录路径,后面紧跟着库名,如下所示:
-L"C:\path_to_hyde_library" -l:HyDE.lib然后告诉我们发生了什么。
发布于 2010-08-18 19:41:13
./src/FS5HyDE.o和./src/HyDEObservation.o应该是最新的参数,如果其他对象文件(*.o文件)需要,这意味着最需要的object files应该尽可能地最后出现在参数列表中。
https://stackoverflow.com/questions/3515770
复制相似问题