BRL-CAD / brlcad

BRL-CAD is a powerful cross-platform open source combinatorial solid modeling system
https://brlcad.org
Other
705 stars 145 forks source link

brl-cad dll build errors #105

Closed kennethsdavis closed 7 months ago

kennethsdavis commented 10 months ago

7.36.0

7-36-0_brlcad-dll.patch

7.38.1

kennethsdavis commented 10 months ago

I don't know what the solutions are to the 7.38.1 errors. If the symbols are removed from either libbg-static or libbv-static, then other targets fail to build.

starseeker commented 9 months ago

I applied your patch and also fixed a couple missed function name adjustments (commit 03ffae5bfd) - for the vlist.obj problem, can you provide a couple examples of the errors you're seeing?

kennethsdavis commented 9 months ago

@starseeker, I rebased my main branch, but ConstDatabase.cpp in rt-cubed still has a reference to nmg_booltree_leaf_tess. Replacing that with rt_booltree_leaf_tess allows me to get to the link phase. Here are the duplicate symbols you asked for:

20>------ Build started: Project: brlcad, Configuration: Release x64 ------
20>ConstDatabase.cpp
20>libbg-static.lib(polygon.obj) : error LNK2005: pd already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_3 already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_3box already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_3cont already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_3line already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_3move already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_3point already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_3space already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_arc already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_box already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_circle already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_cont already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_line already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_move already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_point already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pd_space already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pdv_3 already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pdv_3box already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pdv_3cont already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pdv_3line already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pdv_3move already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pdv_3point already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pdv_3ray already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pdv_3space already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_3 already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_3box already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_3cont already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_3line already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_3move already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_3point already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_3space already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_arc already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_box already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_circle already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_color already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_color_buc already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_cont already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_erase already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_flush already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_getOutputMode already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_label already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_line already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_linmod already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_move already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_point already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_setOutputMode already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: pl_space already defined in libbv-static.lib(vlist.obj)
20>libbg-static.lib(polygon.obj) : error LNK2005: plot3_invalid already defined in libbv-static.lib(vlist.obj)

Here's my config file for cmake. My build command is 'devenv "BRLCAD.sln" /project brlcad /build "Release^|x64"':

set(BRLCAD_ENABLE_BRLCAD_LIBRARY ON CACHE BOOL "Build brlcad.dll")
set(BRLCAD_ENABLE_COMPILER_WARNINGS OFF CACHE BOOL "BRLCAD_ENABLE_COMPILER_WARNINGS")
set(BRLCAD_ENABLE_MINIMAL ON CACHE BOOL "BRLCAD_ENABLE_MINIMAL")
set(BRLCAD_ENABLE_OPENNURBS_EXTENSIONS OFF CACHE BOOL "BRLCAD_ENABLE_OPENNURBS_EXTENSIONS")
set(BRLCAD_EXTRADOCS OFF CACHE BOOL "BRLCAD_EXTRADOCS")
set(BRLCAD_EXTRADOCS_HTML OFF CACHE BOOL "BRLCAD_EXTRADOCS_HTML")
set(BRLCAD_EXTRADOCS_PPT OFF CACHE BOOL "BRLCAD_EXTRADOCS_PPT")
set(BRLCAD_EXTRADOCS_VALIDATE OFF CACHE BOOL "BRLCAD_EXTRADOCS_VALIDATE")
set(BRLCAD_FLAGS_DEBUG OFF CACHE BOOL "BRLCAD_FLAGS_DEBUG")
set(BRLCAD_INSTALL_EXAMPLE_GEOMETRY OFF CACHE BOOL "BRLCAD_INSTALL_EXAMPLE_GEOMETRY")
set(BUILD_SHARED_LIBS ON CACHE BOOL "BUILD_SHARED_LIBS")
set(BUILD_STATIC_LIBS ON CACHE BOOL "BUILD_STATIC_LIBS")
set(BUILD_TESTING OFF CACHE BOOL "BUILD_TESTING")
set(BRLCAD_ENABLE_TK OFF CACHE BOOL "BRLCAD_ENABLE_TK")
set(BRLCAD_ITK "DISABLED BRLCAD_ENABLE_TK" CACHE STRING "BRLCAD_ITK")
set(BRLCAD_IWIDGETS "DISABLED BRLCAD_ENABLE_TK" CACHE STRING "BRLCAD_IWIDGETS")
set(BRLCAD_TK "DISABLED BRLCAD_ENABLE_TK" CACHE STRING "BRLCAD_TK")
set(BRLCAD_TKHTML "DISABLED BRLCAD_ENABLE_TK" CACHE STRING "BRLCAD_TKHTML")
set(BRLCAD_TKTABLE "DISABLED BRLCAD_ENABLE_TK" CACHE STRING "BRLCAD_TKTABLE")
starseeker commented 9 months ago

OK, that's undoubtedly related to making bv/plot3.h header only. Not sure what the fix is yet.

starseeker commented 7 months ago

@kennethsdavis Does f5f1e19d376b2acdbc142cf16665eb1e5ab94aa5 fix the issue for you?

kennethsdavis commented 7 months ago

@starseeker Yes, this commit builds brlcad.dll without error.

starseeker commented 7 months ago

@kennethsdavis can you confirm latest main still builds for you (as of at least 89563f4 ?) If so we can probably close this.

kennethsdavis commented 7 months ago

Confirmed. 89563f4 still builds