Link failed with libadbc_driver_framework.dll.a
- Dominant language
- C#
- Stars
- 627
- Forks
- 217
- Avg merge
- 17h
- Merged PRs (30d)
- 57
Description
### What happened?
export symbol visibility issue
### Stack Trace
_No response_
### How can we reproduce the bug?
0. Get the latest source
1. Enter C folder
2. Build the C source
```bash
meson setup ../build
meson compile -C ../build
ninja install
```
```text
[0/1] Installing filesInstalling driver/common/libadbc_driver_common.dll to C:/msys/ucrt64/bin
Installing driver/common/libadbc_driver_common.dll.a to C:/msys/ucrt64/lib
Installing driver/framework/libadbc_driver_framework.dll to C:/msys/ucrt64/bin
Installing driver/framework/libadbc_driver_framework.dll.a to C:/msys/ucrt64/lib
Installing D:/Github/adbc/arrow-adbc/c/include/adbc.h to C:/msys/ucrt64/include
Installing D:/Github/adbc/arrow-adbc/c/include/arrow-adbc/adbc.h to C:/msys/ucrt64/include/arrow-adbc
```
3. Generate `adbc-driver-manager.pc` manually
4. Enter glib folder
5. Build glib source
```bash
meson setup build
meson compile -C build
```
6. Then error throwed as follow, it seems that it is the export visibility issue
```
[8/10] Linking target adbc-glib/libadbc-glib-1.dll
FAILED: [code=1] adbc-glib/libadbc-glib-1.dll
"cc" -o adbc-glib/libadbc-glib-1.dll adbc-glib/libadbc-glib-1.dll.p/meson-generated_.._enum-types.c.obj adbc-glib/libadbc-glib-1.dll.p/connection.c.obj adbc-glib/libadbc-glib-1.dll.p/database.c.obj adbc-glib/libadbc-glib-1.dll.p/error.c.obj adbc-glib/libadbc-glib-1.dll.p/statement.c.obj "-Wl,--allow-shlib-undefined" "-shared" "-Wl,--start-group" "-Wl,--out-implib=adbc-glib/libadbc-glib.dll.a" "C:/msys/ucrt64/lib/libadbc_driver_framework.dll.a" "C:/msys/ucrt64/lib/libgobject-2.0.dll.a" "C:/msys/ucrt64/lib/libglib-2.0.dll.a" "C:/msys/ucrt64/lib/libintl.dll.a" "-Wl,--subsystem,console" "-lkernel32" "-luser32" "-lgdi32" "-lwinspool" "-lshell32" "-lole32" "-loleaut32" "-luuid" "-lcomdlg32" "-ladvapi32" "-Wl,--end-group"
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/connection.c.obj: in function `gadbc_connection_dispose':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/connection.c:112:(.text+0x319): undefined reference to `__imp_AdbcConnectionRelease'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/connection.c.obj: in function `gadbc_connection_initialize':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/connection.c:148:(.text+0x420): undefined reference to `__imp_AdbcConnectionNew'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/connection.c.obj: in function `gadbc_connection_release':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/connection.c:194:(.text+0x520): undefined reference to `__imp_AdbcConnectionRelease'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/connection.c.obj: in function `gadbc_connection_set_option':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/connection.c:227:(.text+0x5eb): undefined reference to `__imp_AdbcConnectionSetOption'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/connection.c.obj: in function `gadbc_connection_init':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/connection.c:305:(.text+0x778): undefined reference to `__imp_AdbcConnectionInit'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/connection.c.obj: in function `gadbc_connection_get_info':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/connection.c:364:(.text+0x876): undefined reference to `__imp_AdbcConnectionGetInfo'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/connection.c.obj: in function `gadbc_connection_get_objects':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/connection.c:505:(.text+0x97c): undefined reference to `__imp_AdbcConnectionGetObjects'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/connection.c.obj: in function `gadbc_connection_get_table_schema':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/connection.c:542:(.text+0xa69): undefined reference to `__imp_AdbcConnectionGetTableSchema'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/connection.c.obj: in function `gadbc_connection_get_table_types':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/connection.c:582:(.text+0xb38): undefined reference to `__imp_AdbcConnectionGetTableTypes'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/connection.c.obj: in function `gadbc_connection_get_statistics':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/connection.c:670:(.text+0xc33): undefined reference to `__imp_AdbcConnectionGetStatistics'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/connection.c.obj: in function `gadbc_connection_get_statistic_names':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/connection.c:713:(.text+0xd05): undefined reference to `__imp_AdbcConnectionGetStatisticNames'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/connection.c.obj: in function `gadbc_connection_commit':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/connection.c:743:(.text+0xda5): undefined reference to `__imp_AdbcConnectionCommit'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/connection.c.obj: in function `gadbc_connection_rollback':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/connection.c:768:(.text+0xe22): undefined reference to `__imp_AdbcConnectionRollback'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/database.c.obj: in function `gadbc_database_finalize':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/database.c:50:(.text+0x1e7): undefined reference to `__imp_AdbcDatabaseRelease'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/database.c.obj: in function `gadbc_database_new':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/database.c:75:(.text+0x2d3): undefined reference to `__imp_AdbcDatabaseNew'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/database.c:79:(.text+0x327): undefined reference to `__imp_AdbcDriverManagerDatabaseSetLoadFlags'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/database.c.obj: in function `gadbc_database_release':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/database.c:113:(.text+0x3e4): undefined reference to `__imp_AdbcDatabaseRelease'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/database.c.obj: in function `gadbc_database_set_option':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/database.c:145:(.text+0x4af): undefined reference to `__imp_AdbcDatabaseSetOption'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/database.c.obj: in function `gadbc_database_set_load_flags':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/database.c:177:(.text+0x547): undefined reference to `__imp_AdbcDriverManagerDatabaseSetLoadFlags'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/database.c.obj: in function `gadbc_database_init':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/database.c:202:(.text+0x5d6): undefined reference to `__imp_AdbcDatabaseInit'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/error.c.obj: in function `gadbc_error_check':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/error.c:83:(.text+0x1e3): undefined reference to `__imp_AdbcStatusCodeMessage'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/error.c:87:(.text+0x242): undefined reference to `__imp_AdbcStatusCodeMessage'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/error.c.obj: in function `gadbc_error_warn':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/error.c:102:(.text+0x2f5): undefined reference to `__imp_AdbcStatusCodeMessage'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/statement.c.obj: in function `gadbc_statement_dispose':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/statement.c:49:(.text+0x1e7): undefined reference to `__imp_AdbcStatementRelease'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/statement.c.obj: in function `gadbc_statement_initialize':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/statement.c:95:(.text+0x32f): undefined reference to `__imp_AdbcStatementNew'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/statement.c.obj: in function `gadbc_statement_release':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/statement.c:149:(.text+0x467): undefined reference to `__imp_AdbcStatementRelease'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/statement.c.obj: in function `gadbc_statement_set_sql_query':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/statement.c:184:(.text+0x527): undefined reference to `__imp_AdbcStatementSetSqlQuery'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/statement.c.obj: in function `gadbc_statement_set_option_internal':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/statement.c:199:(.text+0x5c1): undefined reference to `__imp_AdbcStatementSetOption'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/statement.c.obj: in function `gadbc_statement_prepare':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/statement.c:291:(.text+0x74a): undefined reference to `__imp_AdbcStatementPrepare'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/statement.c.obj: in function `gadbc_statement_get_parameter_schema':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/statement.c:333:(.text+0x7fe): undefined reference to `__imp_AdbcStatementGetParameterSchema'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/statement.c.obj: in function `gadbc_statement_bind':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/statement.c:370:(.text+0x8ce): undefined reference to `__imp_AdbcStatementBind'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/statement.c.obj: in function `gadbc_statement_bind_stream':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/statement.c:400:(.text+0x968): undefined reference to `__imp_AdbcStatementBindStream'
C:/msys/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/16.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: adbc-glib/libadbc-glib-1.dll.p/statement.c.obj: in function `gadbc_statement_execute':
D:\Github\adbc\arrow-adbc\glib\build/../adbc-glib/statement.c:441:(.text+0xa4d): undefined reference to `__imp_AdbcStatementExecuteQuery'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
```
### Environment/Setup
Windows 11 + MSYS2(UCRT64)
Contributor guide
Research direction
Start in the C and glib directories with the Meson setup and compile commands from the report, then inspect the generated adbc-driver-manager.pc and the link step for adbc-glib/libadbc-glib-1.dll. Reproduce the Windows build and trace why the AdbcConnection, AdbcDatabase, and AdbcStatement symbols are unresolved; done means the glib source links successfully.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 48/100