h3
h3 copied to clipboard
Some functions seem missing in DLL version of library.
For example:
_h3ToFaceIjk
Seems to be missing.
I would advise to keep all C implementation code strictly seperated into *.C files and not inside headers !
Headers should only contain prototypes, no source code !
Here is a listing of for example a debug dll build of this library:
Turbo Dump Version 6.5.4.0 Copyright (c) 1988-2016 Embarcadero Technologies, Inc. Display of File h3.dll
Old Executable Header
DOS File Size 2F000h (192512. ) Load Image Size 450h ( 1104. ) Relocation Table entry count 0000h ( 0. ) Relocation Table address 0040h ( 64. ) Size of header record (in paragraphs) 0004h ( 4. ) Minimum Memory Requirement (in paragraphs) 0000h ( 0. ) Maximum Memory Requirement (in paragraphs) FFFFh ( 65535. ) File load checksum 0000h ( 0. ) Overlay Number 0000h ( 0. )
Initial Stack Segment (SS:SP) 0000:00B8 Program Entry Point (CS:IP) 0000:0000
Portable Executable (PE) File
Header base: 00000100
CPU type AMD64 Flags 2022 [ executable linenumbers symbols largeaddr backwards library ] DLL flags 0160 [ DynamicBase NXCompat ] Linker Version E.1D Time stamp 62E650BF : Sun Jul 31 11:51:59 2022 O/S Version 6.0 User Version 0.0 Subsystem Version 6.0 Subsystem 0003 [ Windows character ] Object count 00000008 Symbols offset 00000000 Symbols count 00000000 Optional header size 00F0 Magic # 20B Code size 0001BA00 Init Data size 00013A00 Uninit Data size 00000000 Entry RVA 0000100F Image base 0000000180000000 Code base 00001000 Object/File align 00001000/00000200 Reserved 00000000 Image size 00034000 Header size 00000400 Checksum 00000000 Stack reserve/commit 0000000000100000/0000000000001000 Heap reserve/commit 0000000000100000/0000000000001000 Number interesting RVAs 00000010 Name RVA Size
Exports 0002B4E0 00000A75 Imports 00030400 00000050 Resources 00032000 0000043C Exceptions 0002E000 00000EC4 Security 00000000 00000000 Fixups 00033000 000002C8 Debug 000292C8 00000038 Description 00000000 00000000 Global Ptr 00000000 00000000 TLS 00000000 00000000 Callbacks 00029300 00000138 Bound Imports 00000000 00000000 Import Addr Table 00030000 00000400 Delayed Imports 00000000 00000000 COM Runtime 00000000 00000000 reserved 00000000 00000000
Object table:
Name VirtSize RVA PhysSize Phys off Flags
01 .text 0001B9C1 00001000 0001BA00 00000400 60000020 [CER] 02 .rdata 0000EF55 0001D000 0000F000 0001BE00 40000040 [IR] 03 .data 00001809 0002C000 00001200 0002AE00 C0000040 [IRW] 04 .pdata 00001164 0002E000 00001200 0002C000 40000040 [IR] 05 .idata 00000F82 00030000 00001000 0002D200 40000040 [IR] 06 .00cfg 00000151 00031000 00000200 0002E200 40000040 [IR] 07 .rsrc 0000043C 00032000 00000600 0002E400 40000040 [IR] 08 .reloc 00000566 00033000 00000600 0002EA00 42000040 [DIR]
Key to section flags: C - contains code D - discardable E - executable I - contains initialized data R - readable W - writeable
Section: Import File Offset: 0002D200 (184832) ImportLookUpTblRVA:000305A8 Time Stamp: 00000000 Forwarder Chain: 00000000 (index of first forwarder reference)
Imports from VCRUNTIME140D.dll (hint = 002F) __vcrt_GetModuleHandleW (hint = 002E) __vcrt_GetModuleFileNameW (hint = 001C) __current_exception_context (hint = 001B) __current_exception (hint = 0025) __std_type_info_destroy_list (hint = 0009) __C_specific_handler_noexcept (hint = 0008) __C_specific_handler (hint = 003C) memcpy (hint = 0031) __vcrt_LoadLibraryExW (hint = 003E) memset
Imports from ucrtbased.dll (hint = 0528) strcat_s (hint = 0068) __stdio_common_vsprintf_s (hint = 0175) _initterm_e (hint = 00B6) _configure_narrow_argv (hint = 0171) _initialize_narrow_environment (hint = 0172) _initialize_onexit_table (hint = 02B5) _register_onexit_function (hint = 00E5) _execute_onexit_table (hint = 00C2) _crt_atexit (hint = 00C1) _crt_at_quick_exit (hint = 00A4) _cexit (hint = 054B) terminate (hint = 039C) _wmakepath_s (hint = 03B8) _wsplitpath_s (hint = 0564) wcscpy_s (hint = 052C) strcpy_s (hint = 0174) _initterm (hint = 0005) _CrtDbgReportW (hint = 0004) _CrtDbgReport (hint = 03D8) acos (hint = 04F8) pow (hint = 047A) fmod (hint = 0547) tan (hint = 03E5) atan2 (hint = 03E4) atan (hint = 03DF) asin (hint = 0512) round (hint = 0342) _wassert (hint = 0520) sin (hint = 042D) cos (hint = 0524) sqrt (hint = 00C9) _dclass (hint = 0069) __stdio_common_vsscanf (hint = 0066) __stdio_common_vsprintf (hint = 0477) fmin (hint = 0416) ceil (hint = 04D7) lroundl (hint = 0459) fabs (hint = 03D7) abs (hint = 04D8) malloc (hint = 0484) free (hint = 03FD) calloc (hint = 02C2) _seh_filter_dll
Imports from KERNEL32.dll (hint = 02DA) GetStartupInfoW (hint = 0468) RaiseException (hint = 03F6) MultiByteToWideChar (hint = 0611) WideCharToMultiByte (hint = 04D5) RtlCaptureContext (hint = 04DC) RtlLookupFunctionEntry (hint = 04E3) RtlVirtualUnwind (hint = 05C0) UnhandledExceptionFilter (hint = 057F) SetUnhandledExceptionFilter (hint = 0220) GetCurrentProcess (hint = 02B8) GetProcAddress (hint = 01B4) FreeLibrary (hint = 05E1) VirtualQuery (hint = 02BE) GetProcessHeap (hint = 0355) HeapFree (hint = 0351) HeapAlloc (hint = 026A) GetLastError (hint = 0281) GetModuleHandleW (hint = 0385) IsDebuggerPresent (hint = 036F) InitializeSListHead (hint = 0125) DisableThreadLibraryCalls (hint = 02F3) GetSystemTimeAsFileTime (hint = 0225) GetCurrentThreadId (hint = 0221) GetCurrentProcessId (hint = 0452) QueryPerformanceCounter (hint = 038C) IsProcessorFeaturePresent (hint = 059E) TerminateProcess
Section: Exports File Offset: 0001BE00 (114176) Flags: 00000000 Time Stamp: FFFFFFFF : Thu Jan 1 00:59:59 1970 Major Version: 0000 Minor Version: 0000
Exports from h3.dll 74 exported name(s), 74 export addresse(s). Ordinal base is 1. Sorted by Name: RVA Ord. Hint Name -------- ---- ---- ---- 00001091 1 0000 _zeroIndexDigits 0000115E 2 0001 areNeighborCells 00001375 3 0002 cellAreaKm2 000015DC 4 0003 cellAreaM2 000014E2 5 0004 cellAreaRads2 00001519 6 0005 cellToBoundary 00001500 7 0006 cellToCenterChild 000011EA 8 0007 cellToChildren 0000105F 9 0008 cellToChildrenSize 00001587 10 0009 cellToLatLng 00001203 11 000A cellToLocalIj 00001573 12 000B cellToParent 00001307 13 000C cellToVertex 000010D2 14 000D cellToVertexes 00001465 15 000E cellsToDirectedEdge 00001438 16 000F cellsToLinkedMultiPolygon 0000100A 17 0010 compactCells 000015BE 18 0011 degsToRads 000014B5 19 0012 destroyLinkedMultiPolygon 000012B7 20 0013 directedEdgeToBoundary 00001258 21 0014 directedEdgeToCells 00001032 22 0015 exactEdgeLengthKm 00001014 23 0016 exactEdgeLengthM 000010D7 24 0017 exactEdgeLengthRads 0000103C 25 0018 getBaseCellNumber 0000120D 26 0019 getDirectedEdgeDestination 000011EF 27 001A getDirectedEdgeOrigin 00001370 28 001B getHexagonAreaAvgKm2 000012AD 29 001C getHexagonAreaAvgM2 00001217 30 001D getHexagonEdgeLengthAvgKm 000010E6 31 001E getHexagonEdgeLengthAvgM 000015B9 32 001F getIcosahedronFaces 00001280 33 0020 getNumCells 000014BF 34 0021 getPentagons 00001343 35 0022 getRes0Cells 000015AA 36 0023 getResolution 0000113B 37 0024 greatCircleDistanceKm 000012A8 38 0025 greatCircleDistanceM 0000117C 39 0026 greatCircleDistanceRads 0000159B 40 0027 gridDisk 00001122 41 0028 gridDiskDistances 0000141F 42 0029 gridDiskDistancesSafe 000011F4 43 002A gridDiskDistancesUnsafe 00001334 44 002B gridDiskUnsafe 0000153C 45 002C gridDisksUnsafe 000012E4 46 002D gridDistance 0000149C 47 002E gridPathCells 000011E0 48 002F gridPathCellsSize 0000121C 49 0030 gridRingUnsafe 00001505 50 0031 h3ToString 00001140 51 0032 isPentagon 00001262 52 0033 isResClassIII 0000106E 53 0034 isValidCell 00001582 54 0035 isValidDirectedEdge 0000155F 55 0036 isValidVertex 0000129E 56 0037 iterInitBaseCellNum 000013BB 57 0038 iterInitParent 00001532 58 0039 iterInitRes 000013C0 59 003A iterStepChild 0000123A 60 003B iterStepRes 000013CA 61 003C latLngToCell 000010AA 62 003D localIjToCell 0000139D 63 003E maxFaceCount 0000105A 64 003F maxGridDiskSize 000014D3 65 0040 maxPolygonToCellsSize 00001546 66 0041 originToDirectedEdges 0000111D 67 0042 pentagonCount 00001514 68 0043 polygonToCells 00001104 69 0044 radsToDegs 00001389 70 0045 res0CellCount 000012E9 71 0046 stringToH3 000014FB 72 0047 uncompactCells 00001433 73 0048 uncompactCellsSize 0000126C 74 0049 vertexToLatLng
Section: Resources File Offset: 0002E400 (189440) Flags: 00000000 Time Stamp: 00000000 Major Version: 0000 Minor Version: 0000
Resources: Type Name Lang Id
[0 named entries, 1 ID entries] type: Manifest (24) (next directory @00000018)
[0 named entries, 1 ID entries]
type: Bitmap (2) (next directory @00000030)
[0 named entries, 1 ID entries]
type: Unknown (1033) (data @00000048)
Offset: 00032170
Size: 0000017D
Code Page: 00000000
Reserved: 00000000
I don’t know why those functions are missing from the DLL (I don’t use windows), but _h3ToFaceIjk is defined in src/h3lib/lib/h3Index.c .
On Aug 18, 2022, at 7:20 PM, Skybuck Flying @.***> wrote:
For example:
_h3ToFaceIjk
Seems to be missing.
I would advise to keep all C implementation code strictly seperated into *.C files and not inside headers !
Headers should only contain prototypes, no source code !
— Reply to this email directly, view it on GitHub https://www.google.com/url?q=https://github.com/uber/h3/issues/643&source=gmail-imap&ust=1661480429000000&usg=AOvVaw1rlXtXMgDM8vgwdYX3ZRWD, or unsubscribe https://www.google.com/url?q=https://github.com/notifications/unsubscribe-auth/ADDRFIA4RFUH54PRMPVMRYTVZ3VOZANCNFSM567EYTPA&source=gmail-imap&ust=1661480429000000&usg=AOvVaw0b9DtWHJyJlC6Z0yafC6VK. You are receiving this because you are subscribed to this thread.
I think this is a Windows specific issue where only explicitly exported functions (see h3api.h.in line 44) will be visible outside the DLL. Could you try configuring the project with CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
set to ON
(cmake -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
) before building and try again?
I think this is a Windows specific issue where only explicitly exported functions (see h3api.h.in line 44) will be visible outside the DLL. Could you try configuring the project with
CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS
set toON
(cmake -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
) before building and try again?
I will try this in a moment, but first I will post my own temporarely/experimental fix which I tried/did before reading your comment, my temporarely/experimental fix is as follows:
My experimental fix was to basically modify the file: h3api.h.in
which seems to be used to generate file: h3api.h
The modification adds the missing export for:
_h3ToFaceIjk
and it also adds the missing structures that are referenced by this api/function call:
CoordIJK FaceIJK
However doing so would lead to a re-declaration error or warning so these were copied & pasted and then renamed to:
CoordIJKv2 FaceIJKv2
For the exporting of this routine it doesn't matter what the name of the structure as as long as it uses the same kind of structures and sizes, so that's why I thought it would work and it did work.
Later CHET was used to convert the C headers into Delphi headers, for this to work the structures have to use the original names to avoid some kind of error, to get CHET working I "nuked" the original structures by disabling them in their own header files and kept the structures in the h3api.h file as to prevent a re-declaration error, since CHET seems to use some CLang libary and this CLang library would detect it otherwise and also error on it, so this fixed it.
Then I tested the loading in Delphi, I did notice the function api appeared twice in the output/api/h3api.pas file and I simply removed one of them, and it worked, the function seems to perform quite nicely !
I think CHET actually sees all the exported functions somehow... but the actual C build does not somehow...
Personally I think the export directive is simply missing, maybe it was intentional because maybe the original author wanted to rename this function first ? Or maybe he/she thought it might not be important ? Or it could simply be looked over because it was in between other internal functions. I believe this last hypothesis might explain why this function is missing, however other functions are also missing... so maybe this is not it.
The function is present in the file h3Index.h at the bottom of the file in between other internal functions:
// Internal functions
int _h3ToFaceIjkWithInitializedFijk(H3Index h, FaceIJK *fijk);
H3Error _h3ToFaceIjk(H3Index h, FaceIJK *fijk);
H3Index _faceIjkToH3(const FaceIJK *fijk, int res);
Direction _h3LeadingNonZeroDigit(H3Index h);
H3Index _h3RotatePent60ccw(H3Index h);
H3Index _h3RotatePent60cw(H3Index h);
H3Index _h3Rotate60ccw(H3Index h);
H3Index _h3Rotate60cw(H3Index h);
DECLSPEC H3Index _zeroIndexDigits(H3Index h, int start, int end);
So this is what led to my hypothesis that it may have been missed, because it was in between these internal functions ?
However this does not explain why other functions from other files are missing, so maybe there are export directives elsewhere for these functions, so I will try your suggestion and see if that fixes it.
So far the commands I used to build with CMake were:
Step 1. use CMakeGUI to configure and generate a build folder (not sure if this step is required).
Step 2: Configure for DLL release: E:\SourceCode\h3>cmake ..\h3 -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON
Step 3: Build DLL release: E:\SourceCode\h3>cmake --build . --config Release
I will try and integrate your suggestion into these commands, not sure at which step to integrate, step 2 seems most likely to me:
cmake ..\h3 -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
I will report back later.
For now here is my own custom/temporarely/experimental fix that I used to produce a working release DLL with this particular function/api exported:
// dummy structures added at top of file:
/** @struct CoordIJK
* @brief IJK hexagon coordinates
*
* Each axis is spaced 120 degrees apart.
*/
typedef struct {
int i; ///< i component
int j; ///< j component
int k; ///< k component
} CoordIJKv2;
/** @struct FaceIJK
* @brief Face number and ijk coordinates on that face-centered coordinate
* system
*/
typedef struct {
int face; ///< face number
CoordIJKv2 coord; ///< ijk coordinates on that face
} FaceIJKv2;
// api modified to use/reference dummy structures:
/** @defgroup _h3ToFaceIjk _h3ToFaceIjk
* Functions for _h3ToFaceIjk
* @{
*/
/** @brief Convert an H3Index to a FaceIJK address */
DECLSPEC H3Error H3_EXPORT(_h3ToFaceIjk)(H3Index h, FaceIJKv2 *fijk);
/** @} */
Reporting back on your suggestion:
(Not sure if the missing doxygen has anything to do with it, see output below)
So far it's building executables and such, I will report back once it's done and I know more ! ;)
E:\SourceCode\h3>cmake ..\h3 -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 6.1.7601.
CMake Warning at CMakeLists.txt:334 (message):
clang-format was not detected, so automatic source code reformatting is
disabled
CMake Warning at CMakeLists.txt:346 (message):
clang-tidy was not detected, so source code linting is disabled
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- Configuring done
-- Generating done
-- Build files have been written to: E:/SourceCode/h3
E:\SourceCode\h3>cmake --build . --config Release
Microsoft (R) Build Engine version 16.11.2+f32259642 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
Auto build dll exports
Creating library E:/SourceCode/h3/bin/Release/h3.lib and object E:/SourceCode/h3/bin/Release/h3.exp
h3.vcxproj -> E:\SourceCode\h3\bin\Release\h3.dll
benchmarkCellsToLinkedMultiPolygon.vcxproj -> E:\SourceCode\h3\bin\Release\benchmarkCellsToLinkedMultiPolygon.exe
benchmarkDirectedEdge.vcxproj -> E:\SourceCode\h3\bin\Release\benchmarkDirectedEdge.exe
benchmarkGridDiskCells.vcxproj -> E:\SourceCode\h3\bin\Release\benchmarkGridDiskCells.exe
benchmarkGridPathCells.vcxproj -> E:\SourceCode\h3\bin\Release\benchmarkGridPathCells.exe
Your suggested command WORKED ! =D:
cmake ..\h3 -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
I LOVE YOU RIGHT NOW, IT HAS APPERENTLY/ACCORDING TO TDUMP, EXPORTED ALL FUNCTIONS ! YEAH ! =D
Here is the output of TDUMP from Delphi:
Turbo Dump Version 6.5.4.0 Copyright (c) 1988-2016 Embarcadero Technologies, Inc.
Display of File h3.dll
Old Executable Header
DOS File Size 16200h ( 90624. )
Load Image Size 450h ( 1104. )
Relocation Table entry count 0000h ( 0. )
Relocation Table address 0040h ( 64. )
Size of header record (in paragraphs) 0004h ( 4. )
Minimum Memory Requirement (in paragraphs) 0000h ( 0. )
Maximum Memory Requirement (in paragraphs) FFFFh ( 65535. )
File load checksum 0000h ( 0. )
Overlay Number 0000h ( 0. )
Initial Stack Segment (SS:SP) 0000:00B8
Program Entry Point (CS:IP) 0000:0000
Portable Executable (PE) File
Header base: 000000F8
CPU type AMD64
Flags 2022 [ executable linenumbers symbols largeaddr backwards library ]
DLL flags 0160 [ DynamicBase NXCompat ]
Linker Version E.1D
Time stamp 63012603 : Sat Aug 20 20:20:51 2022
O/S Version 6.0
User Version 0.0
Subsystem Version 6.0
Subsystem 0003 [ Windows character ]
Object count 00000006
Symbols offset 00000000
Symbols count 00000000
Optional header size 00F0
Magic # 20B
Code size 0000BC00
Init Data size 0000A800
Uninit Data size 00000000
Entry RVA 0000C2B4
Image base 0000000180000000
Code base 00001000
Object/File align 00001000/00000200
Reserved 00000000
Image size 0001A000
Header size 00000400
Checksum 00000000
Stack reserve/commit 0000000000100000/0000000000001000
Heap reserve/commit 0000000000100000/0000000000001000
Number interesting RVAs 00000010
Name RVA Size
------------------ -------- --------
Exports 000142B0 00001468
Imports 00015718 0000008C
Resources 00018000 000001E0
Exceptions 00017000 00000DD4
Security 00000000 00000000
Fixups 00019000 00000030
Debug 00012A60 0000001C
Description 00000000 00000000
Global Ptr 00000000 00000000
TLS 00000000 00000000
Callbacks 00012A80 00000138
Bound Imports 00000000 00000000
Import Addr Table 0000D000 000001A8
Delayed Imports 00000000 00000000
COM Runtime 00000000 00000000
reserved 00000000 00000000
Object table:
# Name VirtSize RVA PhysSize Phys off Flags
-- -------- -------- -------- -------- -------- --------
01 .text 0000BBF8 00001000 0000BC00 00000400 60000020 [CER]
02 .rdata 00008D0E 0000D000 00008E00 0000C000 40000040 [IR]
03 .data 00000650 00016000 00000200 00014E00 C0000040 [IRW]
04 .pdata 00000DD4 00017000 00000E00 00015000 40000040 [IR]
05 .rsrc 000001E0 00018000 00000200 00015E00 40000040 [IR]
06 .reloc 00000030 00019000 00000200 00016000 42000040 [DIR]
Key to section flags:
C - contains code
D - discardable
E - executable
I - contains initialized data
R - readable
W - writeable
******************************************************************************
Section: Import
File Offset: 0000C000 (49152)
ImportLookUpTblRVA:00015828
Time Stamp: 00000000
Forwarder Chain: 00000000 (index of first forwarder reference)
Imports from VCRUNTIME140.dll
(hint = 0025) __std_type_info_destroy_list
(hint = 0008) __C_specific_handler
(hint = 003C) memcpy
(hint = 003E) memset
Imports from api-ms-win-crt-heap-l1-1-0.dll
(hint = 0019) malloc
(hint = 0017) calloc
(hint = 0018) free
Imports from api-ms-win-crt-math-l1-1-0.dll
(hint = 007C) ceil
(hint = 0118) tan
(hint = 00EC) lroundl
(hint = 004A) acos
(hint = 00FE) pow
(hint = 0116) sqrt
(hint = 0090) cos
(hint = 0112) sin
(hint = 0109) round
(hint = 004F) asin
(hint = 00C6) fmin
(hint = 00C9) fmod
(hint = 0010) _dclass
(hint = 0054) atan
(hint = 0055) atan2
Imports from api-ms-win-crt-stdio-l1-1-0.dll
(hint = 0010) __stdio_common_vsscanf
(hint = 000D) __stdio_common_vsprintf
Imports from api-ms-win-crt-runtime-l1-1-0.dll
(hint = 0016) _cexit
(hint = 0022) _execute_onexit_table
(hint = 0034) _initialize_onexit_table
(hint = 0033) _initialize_narrow_environment
(hint = 003F) _seh_filter_dll
(hint = 0037) _initterm_e
(hint = 0036) _initterm
(hint = 0018) _configure_narrow_argv
Imports from KERNEL32.dll
(hint = 02F3) GetSystemTimeAsFileTime
(hint = 04DC) RtlLookupFunctionEntry
(hint = 04E3) RtlVirtualUnwind
(hint = 05C0) UnhandledExceptionFilter
(hint = 057F) SetUnhandledExceptionFilter
(hint = 0220) GetCurrentProcess
(hint = 0385) IsDebuggerPresent
(hint = 036F) InitializeSListHead
(hint = 0125) DisableThreadLibraryCalls
(hint = 04D5) RtlCaptureContext
(hint = 0225) GetCurrentThreadId
(hint = 0221) GetCurrentProcessId
(hint = 0452) QueryPerformanceCounter
(hint = 038C) IsProcessorFeaturePresent
(hint = 059E) TerminateProcess
******************************************************************************
Section: Exports
File Offset: 0000C000 (49152)
Flags: 00000000
Time Stamp: FFFFFFFF : Thu Jan 1 00:59:59 1970
Major Version: 0000
Minor Version: 0000
Exports from h3.dll
196 exported name(s), 196 export addresse(s). Ordinal base is 1.
Sorted by Name:
RVA Ord. Hint Name
-------- ---- ---- ----
00016050 1 0000 __isa_available_default
00004410 2 0001 __local_stdio_printf_options
00004420 3 0002 __local_stdio_scanf_options
0000A440 4 0003 _adjustOverageClassII
0000A610 5 0004 _adjustPentVertOverage
0000BA10 6 0005 _baseCellIsCwOffset
0000BA30 7 0006 _baseCellToCCWrot60
0000BB00 8 0007 _baseCellToFaceIjk
00002B70 9 0008 _downAp3
00002C10 10 0009 _downAp3r
00002CB0 11 000A _downAp7
00002D60 12 000B _downAp7r
0000A750 13 000C _faceIjkPentToCellBoundary
0000ACD0 14 000D _faceIjkPentToVerts
0000BB20 15 000E _faceIjkToBaseCell
0000BB50 16 000F _faceIjkToBaseCellCCWrot60
0000AE20 17 0010 _faceIjkToCellBoundary
0000B3B0 18 0011 _faceIjkToGeo
00004430 19 0012 _faceIjkToH3
0000B410 20 0013 _faceIjkToVerts
000086E0 21 0014 _geoAzDistanceRads
000089D0 22 0015 _geoAzimuthRads
0000B580 23 0016 _geoToClosestFace
0000B620 24 0017 _geoToFaceIjk
0000B670 25 0018 _geoToHex2d
00006160 26 0019 _geoToVec3d
0000BB80 27 001A _getBaseCellDirection
0000BBC0 28 001B _getBaseCellNeighbor
00001000 29 001C _getEdgeHexagons
000011E0 30 001D _gridDiskDistancesInternal
00004710 31 001E _h3LeadingNonZeroDigit
00004750 32 001F _h3Rotate60ccw
000047D0 33 0020 _h3Rotate60cw
00004850 34 0021 _h3RotatePent60ccw
00004930 35 0022 _h3RotatePent60cw
00004A10 36 0023 _h3ToFaceIjk
00004C00 37 0024 _h3ToFaceIjkWithInitializedFijk
00009EF0 38 0025 _hashVertex
00002E10 39 0026 _hex2dToCoordIJK
0000B860 40 0027 _hex2dToGeo
00003630 41 0028 _hexRadiusKm
00002FC0 42 0029 _ijkAdd
00002FE0 43 002A _ijkMatches
00003000 44 002B _ijkNormalize
00003080 45 002C _ijkRotate60ccw
00003120 46 002D _ijkRotate60cw
000031C0 47 002E _ijkScale
000031E0 48 002F _ijkSub
00003200 49 0030 _ijkToHex2d
00009F50 50 0031 _initVertexNode
00009B70 51 0032 _ipow
0000BBE0 52 0033 _isBaseCellPentagon
0000BC00 53 0034 _isBaseCellPolarPentagon
00003240 54 0035 _neighbor
000061D0 55 0036 _pointSquareDist
00008A90 56 0037 _posAngleRads
00003280 57 0038 _rotate60ccw
000032E0 58 0039 _rotate60cw
00008AC0 59 003A _setGeoRads
00003340 60 003B _setIJK
00006210 61 003C _square
00003350 62 003D _unitIjkToDigit
000033F0 63 003E _upAp7
00003470 64 003F _upAp7r
00006070 65 0040 _v2dEquals
00006090 66 0041 _v2dIntersect
00006130 67 0042 _v2dMag
00001590 68 0043 _vertexGraphToLinkedGeo
00004CB0 69 0044 _zeroIndexDigits
00006BB0 70 0045 addLinkedCoord
00006C20 71 0046 addLinkedLoop
00006C40 72 0047 addNewLinkedLoop
00006C80 73 0048 addNewLinkedPolygon
00009F70 74 0049 addVertexNode
00009650 75 004A areNeighborCells
00003690 76 004B bboxCenter
000036F0 77 004C bboxContains
00003740 78 004D bboxEquals
000039F0 79 004E bboxFromGeoLoop
00006CB0 80 004F bboxFromLinkedGeoLoop
00003780 81 0050 bboxHexEstimate
000038F0 82 0051 bboxIsTransmeridian
00003B90 83 0052 bboxesFromGeoPolygon
00008AD0 84 0053 cellAreaKm2
00008B00 85 0054 cellAreaM2
00008B40 86 0055 cellAreaRads2
00004CF0 87 0056 cellToBoundary
00004D80 88 0057 cellToCenterChild
00004E00 89 0058 cellToChildren
00004E70 90 0059 cellToChildrenSize
00004F00 91 005A cellToLatLng
00007A50 92 005B cellToLocalIj
00007AC0 93 005C cellToLocalIjk
00004F60 94 005D cellToParent
00006220 95 005E cellToVertex
00006480 96 005F cellToVertexes
00009810 97 0060 cellsToDirectedEdge
00001640 98 0061 cellsToLinkedMultiPolygon
00004FF0 99 0062 compactCells
00008EE0 100 0063 constrainLat
00008F10 101 0064 constrainLng
00007040 102 0065 countLinkedCoords
00007040 103 0066 countLinkedLoops
00007060 104 0067 countLinkedPolygons
000034F0 105 0068 cubeToIjk
00008F60 106 0069 degsToRads
00007080 107 006A destroyLinkedGeoLoop
000070B0 108 006B destroyLinkedMultiPolygon
0000A080 109 006C destroyVertexGraph
00009870 110 006D directedEdgeToBoundary
00009960 111 006E directedEdgeToCells
00001830 112 006F directionForNeighbor
00006730 113 0070 directionForVertexNum
00008F70 114 0071 exactEdgeLengthKm
00008FA0 115 0072 exactEdgeLengthM
00008FD0 116 0073 exactEdgeLengthRads
0000A180 117 0074 findNodeForEdge
0000A250 118 0075 findNodeForVertex
0000A2F0 119 0076 firstVertexNode
000091A0 120 0077 geoAlmostEqual
000091E0 121 0078 geoAlmostEqualThreshold
000056B0 122 0079 getBaseCellNumber
000099D0 123 007A getDirectedEdgeDestination
00009A30 124 007B getDirectedEdgeOrigin
00009220 125 007C getHexagonAreaAvgKm2
00009240 126 007D getHexagonAreaAvgM2
00009260 127 007E getHexagonEdgeLengthAvgKm
00009280 128 007F getHexagonEdgeLengthAvgM
000056C0 129 0080 getIcosahedronFaces
000092A0 130 0081 getNumCells
000058D0 131 0082 getPentagons
0000BC10 132 0083 getRes0Cells
00005990 133 0084 getResolution
000092E0 134 0085 greatCircleDistanceKm
00009300 135 0086 greatCircleDistanceM
00009320 136 0087 greatCircleDistanceRads
00001B00 137 0088 gridDisk
00001B10 138 0089 gridDiskDistances
00001C20 139 008A gridDiskDistancesSafe
00001C60 140 008B gridDiskDistancesUnsafe
00001DB0 141 008C gridDiskUnsafe
00001DC0 142 008D gridDisksUnsafe
00007E40 143 008E gridDistance
00007EC0 144 008F gridPathCells
000081F0 145 0090 gridPathCellsSize
00001E60 146 0091 gridRingUnsafe
00001FC0 147 0092 h3NeighborRotations
000022D0 148 0093 h3SetToVertexGraph
000059A0 149 0094 h3ToString
00003510 150 0095 ijToIjk
00003530 151 0096 ijkDistance
000035F0 152 0097 ijkToCube
00003610 153 0098 ijkToIj
0000A310 154 0099 initVertexGraph
00003DD0 155 009A isClockwiseGeoLoop
00007150 156 009B isClockwiseLinkedGeoLoop
000059D0 157 009C isPentagon
00005A30 158 009D isResClassIII
00005A40 159 009E isResolutionClassIII
00005A60 160 009F isValidCell
00009A70 161 00A0 isValidDirectedEdge
00006810 162 00A1 isValidVertex
00009BA0 163 00A2 iterInitBaseCellNum
00009C10 164 00A3 iterInitParent
00009CD0 165 00A4 iterInitRes
00009D50 166 00A5 iterStepChild
00009E40 167 00A6 iterStepRes
00005B80 168 00A7 latLngToCell
00003900 169 00A8 lineHexEstimate
00008270 170 00A9 localIjToCell
000082E0 171 00AA localIjkToCell
00005C10 172 00AB makeDirectChild
00005C60 173 00AC maxFaceCount
00002430 174 00AD maxGridDiskSize
00002460 175 00AE maxPolygonToCellsSize
000072D0 176 00AF normalizeMultiPolygon
00009AF0 177 00B0 originToDirectedEdges
00005CE0 178 00B1 pentagonCount
00003FB0 179 00B2 pointInsideGeoLoop
00007870 180 00B3 pointInsideLinkedGeoLoop
000041B0 181 00B4 pointInsidePolygon
00002640 182 00B5 polygonToCells
00009410 183 00B6 radsToDegs
0000A360 184 00B7 removeVertexNode
0000BD30 185 00B8 res0CellCount
00009420 186 00B9 setGeoDegs
00005CF0 187 00BA setH3Index
00005D50 188 00BB sprintf
00005DB0 189 00BC sscanf
00005E10 190 00BD stringToH3
00009440 191 00BE triangleArea
00009560 192 00BF triangleEdgeLengthsToArea
00005E60 193 00C0 uncompactCells
00005F50 194 00C1 uncompactCellsSize
00006890 195 00C2 vertexNumForDirection
00006AE0 196 00C3 vertexToLatLng
******************************************************************************
Section: Resources
File Offset: 00015E00 (89600)
Flags: 00000000
Time Stamp: 00000000
Major Version: 0000
Minor Version: 0000
Resources:
Type Name Lang Id
--------------------------------------------
[0 named entries, 1 ID entries]
type: Manifest (24) (next directory @00000018)
[0 named entries, 1 ID entries]
type: Bitmap (2) (next directory @00000030)
[0 named entries, 1 ID entries]
type: Unknown (1033) (data @00000048)
Offset: 00018060
Size: 0000017D
Code Page: 00000000
Reserved: 00000000
So far I have been using these two commands:
Step 2: Configure for DLL release: cmake ..\h3V4 -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
Step 3: cmake --build . --config Release
But something isn't quite right... it dumps the builds/outputs into the main folder... though it would be nice if the output would go to \h3V4-build\
But I am not sure how to modify the above commands ?
So basically there are two folders:
The git clone into h3v4
and the intended output/builder folder: h3v4-build
Any ideas how to modify the above commands so that it can output to h3v4-build ?
I am also not sure if I should then issue the CMake commands in the original folder: h3v4 or in h3v4-build ? Or maybe it does not matter ???
If you have already built the library from the main folder you may need to clean your git state (git clean -x -f -d .
, which will delete all uncommitted changes from the repo!) to get CMake to do what you want. Otherwise I think CMake will pick up the original build files from the main folder.
Alternately try adding --build .
to the Step 2 command you list above?