danfis / libccd

Library for collision detection between two convex shapes
Other
496 stars 110 forks source link

Inconsistent dll linkage #26

Closed arzezniczak closed 7 years ago

arzezniczak commented 7 years ago

Hello, I'm getting a lot of inconsistent dll linkage warnings during build master branch (pulled from repo today). Additionaly there are some locally defined symbol ... imported in function ... warnings too. Is this normal? I'm using Visual Studio 2015.

Here is build log:

1>------ Build started: Project: ZERO_CHECK, Configuration: Debug Win32 ------
1>  Checking Build System
1>  CMake does not need to re-run because D:/WORK/Projects/libccd-master/_BUILD/CMakeFiles/generate.stamp is up-to-date.
1>  CMake does not need to re-run because D:/WORK/Projects/libccd-master/_BUILD/src/CMakeFiles/generate.stamp is up-to-date.
2>------ Build started: Project: ccd, Configuration: Debug Win32 ------
2>  Building Custom Rule D:/WORK/Projects/libccd-master/src/CMakeLists.txt
2>  CMake does not need to re-run because D:\WORK\Projects\libccd-master\_BUILD\src\CMakeFiles\generate.stamp is up-to-date.
2>  ccd.c
2>D:\WORK\Projects\libccd-master\src\ccd.c(87): warning C4273: 'ccdFirstDirDefault': inconsistent dll linkage
2>  D:\WORK\Projects\libccd-master\src\ccd/ccd.h(75): note: see previous definition of 'ccdFirstDirDefault'
2>D:\WORK\Projects\libccd-master\src\ccd.c(92): warning C4273: 'ccdGJKIntersect': inconsistent dll linkage
2>  D:\WORK\Projects\libccd-master\src\ccd/ccd.h(96): note: see previous definition of 'ccdGJKIntersect'
2>D:\WORK\Projects\libccd-master\src\ccd.c(99): warning C4273: 'ccdGJKSeparate': inconsistent dll linkage
2>  D:\WORK\Projects\libccd-master\src\ccd/ccd.h(107): note: see previous definition of 'ccdGJKSeparate'
2>D:\WORK\Projects\libccd-master\src\ccd.c(177): warning C4273: 'ccdGJKPenetration': inconsistent dll linkage
2>  D:\WORK\Projects\libccd-master\src\ccd/ccd.h(124): note: see previous definition of 'ccdGJKPenetration'
2>  mpr.c
2>D:\WORK\Projects\libccd-master\src\mpr.c(100): warning C4273: 'ccdMPRIntersect': inconsistent dll linkage
2>  D:\WORK\Projects\libccd-master\src\ccd/ccd.h(131): note: see previous definition of 'ccdMPRIntersect'
2>D:\WORK\Projects\libccd-master\src\mpr.c(119): warning C4273: 'ccdMPRPenetration': inconsistent dll linkage
2>  D:\WORK\Projects\libccd-master\src\ccd/ccd.h(146): note: see previous definition of 'ccdMPRPenetration'
2>  polytope.c
2>D:\WORK\Projects\libccd-master\src\polytope.c(257): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
2>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\stdio.h(205): note: see declaration of 'fopen'
2>  support.c
2>  vec3.c
2>D:\WORK\Projects\libccd-master\src\vec3.c(133): warning C4273: 'ccdVec3PointSegmentDist2': inconsistent dll linkage
2>  D:\WORK\Projects\libccd-master\src\ccd/vec3.h(187): note: see previous definition of 'ccdVec3PointSegmentDist2'
2>D:\WORK\Projects\libccd-master\src\vec3.c(141): warning C4273: 'ccdVec3PointTriDist2': inconsistent dll linkage
2>  D:\WORK\Projects\libccd-master\src\ccd/vec3.h(197): note: see previous definition of 'ccdVec3PointTriDist2'
2>  Generating Code...
2>     Creating library D:/WORK/Projects/libccd-master/_BUILD/src/Debug/ccd.lib and object D:/WORK/Projects/libccd-master/_BUILD/src/Debug/ccd.exp
2>ccd.obj : warning LNK4217: locally defined symbol _ccdVec3PointSegmentDist2 imported in function _nextSupport
2>polytope.obj : warning LNK4217: locally defined symbol _ccdVec3PointSegmentDist2 imported in function _ccdPtDumpSVT2
2>ccd.obj : warning LNK4217: locally defined symbol _ccdVec3PointTriDist2 imported in function _doSimplex3
2>mpr.obj : warning LNK4049: locally defined symbol _ccdVec3PointTriDist2 imported
2>polytope.obj : warning LNK4217: locally defined symbol _ccdVec3PointTriDist2 imported in function _ccdPtDelVertex
2>  ccd.vcxproj -> D:\WORK\Projects\libccd-master\_BUILD\src\Debug\ccd.dll
2>  ccd.vcxproj -> D:/WORK/Projects/libccd-master/_BUILD/src/Debug/ccd.pdb (Full PDB)
3>------ Build started: Project: ALL_BUILD, Configuration: Debug Win32 ------
3>  Building Custom Rule D:/WORK/Projects/libccd-master/CMakeLists.txt
3>  CMake does not need to re-run because D:\WORK\Projects\libccd-master\_BUILD\CMakeFiles\generate.stamp is up-to-date.
========== Build: 3 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

Projects build report:
  Status    | Project [Config|platform]
 -----------|---------------------------------------------------------------------------------------------------
  Succeeded | ZERO_CHECK.vcxproj [Debug|Win32]
  Succeeded | src\ccd.vcxproj [Debug|Win32]
  Succeeded | ALL_BUILD.vcxproj [Debug|Win32]

Time Elapsed 00:00:01.455

EDIT I think I've found what's the problem. In compiler.h, line 33: # ifdef libccd_EXPORTS but if you look into preprocessor definitions in Visual Studio configuration properties you will find: ccd_EXPORTS I've changed manually ccd_EXPORTS to libccd_EXPORTS and compiler is no more complaining about inconsistent dll linkage 👍