C++;包装器在同一程序中的使用 我有一个C++程序A,在这里我使用两个库B和C,它们基本上是较大的库,y和z(包含在“外”c)中的包装。我希望能够在同一个程序中运行。

C++;包装器在同一程序中的使用 我有一个C++程序A,在这里我使用两个库B和C,它们基本上是较大的库,y和z(包含在“外”c)中的包装。我希望能够在同一个程序中运行。,c++,static,wrapper,libraries,C++,Static,Wrapper,Libraries,这是一个cmake项目 我在项目的不同子目录中有包装器B和C,它们“包装”的库Y和Z位于每个相应子目录的子目录中 除“我的包装器”标题外,不包括任何标题 B和C中的函数具有不同的名称和命名空间,Y和Z中使用的函数也不同。但不幸的是,这些函数正在调用Y和Z中定义的具有相同名称和参数的其他函数,这会导致运行时错误(Y中的函数调用Z中的函数,而不是自己的函数) 我想解决这个问题,而不必编写两个相互通信的不同程序。我已经尝试将B、C、Y和Z作为静态库 在链接问题“C函数冲突”中尝试了重命名选项。这给

这是一个cmake项目

  • 我在项目的不同子目录中有包装器B和C,它们“包装”的库Y和Z位于每个相应子目录的子目录中

  • 除“我的包装器”标题外,不包括任何标题

  • B和C中的函数具有不同的名称和命名空间,Y和Z中使用的函数也不同。但不幸的是,这些函数正在调用Y和Z中定义的具有相同名称和参数的其他函数,这会导致运行时错误(Y中的函数调用Z中的函数,而不是自己的函数)

  • 我想解决这个问题,而不必编写两个相互通信的不同程序。我已经尝试将B、C、Y和Z作为静态库

    • 在链接问题“C函数冲突”中尝试了重命名选项。这给我带来了很大的麻烦。也许在CMAKE文件的构建方式中还有其他问题需要解决
    • .lib选项无效。我执行了CMake文档中详细说明的操作:

    包括:

     include(${PREFIX}/lib/myproj/myproj-targets.cmake)  add_executable(myexe src1.c)  target_link_libraries(myexe foo)
    

    我将把B和C放入DLL中,每个DLL只链接依赖库:从Y.lib的B.DLL链接,从Z.lib的C.DLL链接。这将冲突的C API分离为单独的二进制文件,但保留在单个程序中

     include(${PREFIX}/lib/myproj/myproj-targets.cmake)  add_executable(myexe src1.c)  target_link_libraries(myexe foo)