Skip to content

When using msvc to compile the sample in samples\basic, there is an error: "definition of dllimport function not allowed" #4280

@UradaSources

Description

@UradaSources

When using msvc to compile the sample in samples\basic, there is an error: "definition of dllimport function not allowed"

i am trying to compile the samples\basic sample program in Windows using the Visual Studio CMake folder mode, but the compilation always fails, and the compiler reports C2491 errors, which seem to be caused by the macro:
#define WASM_RUNTIME_API_EXTERN __declspec(dllimport)

the location is 2 functions under the core\iwasm\common\wasm_runtime_common.c file

WASM_RUNTIME_API_EXTERN bool
wasm_runtime_resolve_symbols(WASMModuleCommon *module)

WASM_RUNTIME_API_EXTERN bool
wasm_runtime_is_underlying_binary_freeable(WASMModuleCommon *const module)

There are also a lot of C4273 dll link inconsistency warnings. Did I do something wrong?

Also, does the project officially support clang under Windows? I tried to compile the project with mingw-clang, and there were always a lot of strange errors

[proc] 执行命令: "C:\Program Files\CMake\bin\cmake.EXE" --build d:/lch/Private/wasm_test/wasm-micro-runtime/samples/basic/build --config Debug --target all --
[build] [10/88   1% :: 1.886] Building C object CMakeFiles/vmlib.dir/D_/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_socket.c.obj
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_socket.c:6:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_api_vmcore.h:9:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_common.h:13:
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/platform_internal.h:14:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    14 | #pragma warning(disable : 5105)
[build]       |         ^
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_socket.c:9:
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_util.h:15:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    15 | #pragma warning(disable : 5105)
[build]       |         ^
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_socket.c:12:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    12 | #pragma comment(lib, "ws2_32.lib")
[build]       |         ^
[build] 3 warnings generated.
[build] [11/88   2% :: 1.934] Building C object CMakeFiles/vmlib.dir/D_/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c.obj
[build] FAILED: CMakeFiles/vmlib.dir/D_/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c.obj 
[build] C:\msys64\clang64\bin\clang.exe -DBH_DEBUG=1 -DBH_FREE=wasm_runtime_free -DBH_MALLOC=wasm_runtime_malloc -DBH_PLATFORM_WINDOWS -DBUILD_TARGET_X86_64 -DHAVE_STRUCT_TIMESPEC -DWAMR_ENABLE_COPY_CALLSTACK=0 -DWASM_DISABLE_HW_BOUND_CHECK=0 -DWASM_DISABLE_STACK_HW_BOUND_CHECK=0 -DWASM_DISABLE_WAKEUP_BLOCKING_OP=0 -DWASM_ENABLE_AOT=1 -DWASM_ENABLE_AOT_INTRINSICS=1 -DWASM_ENABLE_BULK_MEMORY=1 -DWASM_ENABLE_FAST_INTERP=0 -DWASM_ENABLE_INTERP=1 -DWASM_ENABLE_LIBC_BUILTIN=1 -DWASM_ENABLE_LIBC_WASI=1 -DWASM_ENABLE_MINI_LOADER=0 -DWASM_ENABLE_MODULE_INST_CONTEXT=1 -DWASM_ENABLE_MULTI_MODULE=0 -DWASM_ENABLE_QUICK_AOT_ENTRY=1 -DWASM_ENABLE_SHARED_MEMORY=0 -DWASM_ENABLE_SHRUNK_MEMORY=1 -DWASM_GLOBAL_HEAP_SIZE=10485760 -DZYCORE_STATIC_BUILD=1 -DZYDIS_STATIC_BUILD=1 -D_WINSOCK_DEPRECATED_NO_WARNINGS -ID:/lch/Private/wasm_test/wasm-micro-runtime/core/iwasm/interpreter -ID:/lch/Private/wasm_test/wasm-micro-runtime/core/iwasm/aot -ID:/lch/Private/wasm_test/wasm-micro-runtime/samples/basic/build/_deps/zycore-src/include -ID:/lch/Private/wasm_test/wasm-micro-runtime/samples/basic/build/_deps/zycore-build -ID:/lch/Private/wasm_test/wasm-micro-runtime/samples/basic/build/_deps/zydis-build -ID:/lch/Private/wasm_test/wasm-micro-runtime/samples/basic/build/_deps/zydis-src/include -ID:/lch/Private/wasm_test/wasm-micro-runtime/samples/basic/build/_deps/zydis-src/src -ID:/lch/Private/wasm_test/wasm-micro-runtime/core/iwasm/libraries/libc-builtin -ID:/lch/Private/wasm_test/wasm-micro-runtime/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/include -ID:/lch/Private/wasm_test/wasm-micro-runtime/core/iwasm/libraries/libc-wasi/sandboxed-system-primitives/src -ID:/lch/Private/wasm_test/wasm-micro-runtime/samples/basic/../../core/iwasm/include -ID:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows -ID:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include -ID:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/common/libc-util -ID:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/mem-alloc -ID:/lch/Private/wasm_test/wasm-micro-runtime/core/iwasm/common -ID:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/utils -ID:/lch/Private/wasm_test/wasm-micro-runtime/samples/basic/src -ID:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/utils/uncommon -Wall -Wextra -Wformat -Wformat-security -std=gnu99 -ffunction-sections -fdata-sections                                          -Wall -Wno-unused-parameter -Wno-pedantic -g -MD -MT CMakeFiles/vmlib.dir/D_/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c.obj -MF CMakeFiles\vmlib.dir\D_\lch\Private\wasm_test\wasm-micro-runtime\core\shared\platform\windows\win_file.c.obj.d -o CMakeFiles/vmlib.dir/D_/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c.obj -c D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:6:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_api_extension.h:9:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_common.h:13:
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/platform_internal.h:14:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    14 | #pragma warning(disable : 5105)
[build]       |         ^
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:8:
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_util.h:15:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    15 | #pragma warning(disable : 5105)
[build]       |         ^
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:12:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    12 | #pragma comment(lib, "Pathcch.lib")
[build]       |         ^
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:87:13: warning: label followed by a declaration is a C23 extension [-Wc23-extensions]
[build]    87 |             FILE_ATTRIBUTE_TAG_INFO file_info;
[build]       |             ^
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:865:13: warning: label followed by a declaration is a C23 extension [-Wc23-extensions]
[build]   865 |             bool success = CloseHandle(handle->raw.handle);
[build]       |             ^
[build] C:/msys64/clang64/lib/clang/20/include/stdbool.h:24:14: note: expanded from macro 'bool'
[build]    24 | #define bool _Bool
[build]       |              ^
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:872:13: warning: label followed by a declaration is a C23 extension [-Wc23-extensions]
[build]   872 |             int ret = closesocket(handle->raw.socket);
[build]       |             ^
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:1298:31: warning: backslash and newline separated by space [-Wbackslash-newline-escape]
[build]  1298 |             // Starts with \??\ 
[build]       |                               ^
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:1300:20: error: expected identifier
[build]  1300 |                 && ((wbuf[4] >= L'A' && wbuf[4] <= L'Z')
[build]       |                    ^
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:1304:36: warning: backslash and newline separated by space [-Wbackslash-newline-escape]
[build]  1304 |                     // \??\<drive>:\ 
[build]       |                                    ^
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:1313:106: warning: backslash and newline separated by space [-Wbackslash-newline-escape]
[build]  1313 |                     // \??\UNC\<server>\<share>\ - make sure the final path looks like \\<server>\<share>\ 
[build]       |                                                                                                          ^
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:1397:16: warning: '&&' within '||' [-Wlogical-op-parentheses]
[build]  1396 |         || to_path[to_path_len - 1] == '\\'
[build]       |         ~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[build]  1397 |                && !is_directory(absolute_from_path)) {
[build]       |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:1397:16: note: place parentheses around the '&&' expression to silence this warning
[build]  1396 |         || to_path[to_path_len - 1] == '\\'
[build]       |            (
[build]  1397 |                && !is_directory(absolute_from_path)) {
[build]       |                ^                                   
[build]       |                                                    )
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:1428:12: warning: unused variable 'old_path_len' [-Wunused-variable]
[build]  1428 |     size_t old_path_len = 0;
[build]       |            ^~~~~~~~~~~~
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:1705:28: warning: comparison of integers of different signs: 'int' and '__wasi_dircookie_t' (aka 'unsigned long long') [-Wsign-compare]
[build]  1705 |     if (dir_stream->cookie == position)
[build]       |         ~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:1708:28: warning: comparison of integers of different signs: 'int' and '__wasi_dircookie_t' (aka 'unsigned long long') [-Wsign-compare]
[build]  1708 |     if (dir_stream->cookie > position) {
[build]       |         ~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_file.c:1712:31: warning: comparison of integers of different signs: 'int' and '__wasi_dircookie_t' (aka 'unsigned long long') [-Wsign-compare]
[build]  1712 |     while (dir_stream->cookie < position) {
[build]       |            ~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~
[build] 14 warnings and 1 error generated.
[build] [11/88   3% :: 1.960] Building C object CMakeFiles/vmlib.dir/D_/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_thread.c.obj
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_thread.c:6:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_api_vmcore.h:9:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_common.h:13:
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/platform_internal.h:14:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    14 | #pragma warning(disable : 5105)
[build]       |         ^
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_thread.c:594:16: warning: comparison of integers of different signs: 'int' and 'DWORD' (aka 'unsigned long') [-Wsign-compare]
[build]   594 |     return ret != WAIT_FAILED ? BHT_OK : BHT_ERROR;
[build]       |            ~~~ ^  ~~~~~~~~~~~
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_thread.c:782:8: warning: unknown attribute 'thread' ignored [-Wunknown-attributes]
[build]   782 | static os_thread_local_attribute uint8 *thread_stack_boundary = NULL;
[build]       |        ^~~~~~~~~~~~~~~~~~~~~~~~~
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/platform_internal.h:101:46: note: expanded from macro 'os_thread_local_attribute'
[build]   101 | #define os_thread_local_attribute __declspec(thread)
[build]       |                                              ^~~~~~
[build] <built-in>:406:38: note: expanded from macro '__declspec'
[build]   406 | #define __declspec(a) __attribute__((a))
[build]       |                                      ^
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_thread.c:836:8: warning: unknown attribute 'thread' ignored [-Wunknown-attributes]
[build]   836 | static os_thread_local_attribute bool thread_signal_inited = false;
[build]       |        ^~~~~~~~~~~~~~~~~~~~~~~~~
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/platform_internal.h:101:46: note: expanded from macro 'os_thread_local_attribute'
[build]   101 | #define os_thread_local_attribute __declspec(thread)
[build]       |                                              ^~~~~~
[build] <built-in>:406:38: note: expanded from macro '__declspec'
[build]   406 | #define __declspec(a) __attribute__((a))
[build]       |                                      ^
[build] 4 warnings generated.
[build] [11/88   4% :: 1.993] Building C object CMakeFiles/vmlib.dir/D_/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_malloc.c.obj
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_malloc.c:6:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_api_vmcore.h:9:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_common.h:13:
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/platform_internal.h:14:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    14 | #pragma warning(disable : 5105)
[build]       |         ^
[build] 1 warning generated.
[build] [11/88   5% :: 2.003] Building C object CMakeFiles/vmlib.dir/D_/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_memmap.c.obj
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_memmap.c:6:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_api_vmcore.h:9:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_common.h:13:
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/platform_internal.h:14:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    14 | #pragma warning(disable : 5105)
[build]       |         ^
[build] 1 warning generated.
[build] [11/88   6% :: 2.019] Building C object CMakeFiles/vmlib.dir/D_/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_clock.c.obj
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_clock.c:6:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_api_extension.h:9:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_common.h:13:
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/platform_internal.h:14:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    14 | #pragma warning(disable : 5105)
[build]       |         ^
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_clock.c:8:
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_util.h:15:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    15 | #pragma warning(disable : 5105)
[build]       |         ^
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_clock.c:78:13: warning: unused variable 'status' [-Wunused-variable]
[build]    78 |             status = NtQueryTimerResolution(&maximum_time, &minimum_time,
[build]       |             ^~~~~~
[build] 3 warnings generated.
[build] [11/88   7% :: 2.075] Building C object CMakeFiles/vmlib.dir/D_/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_time.c.obj
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_time.c:6:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_api_vmcore.h:9:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_common.h:13:
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/platform_internal.h:14:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    14 | #pragma warning(disable : 5105)
[build]       |         ^
[build] 1 warning generated.
[build] [11/88   9% :: 2.112] Building C object CMakeFiles/vmlib.dir/D_/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/common/libc-util/libc_errno.c.obj
[build] [11/88  10% :: 2.169] Building C object CMakeFiles/vmlib.dir/D_/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_util.c.obj
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_util.c:6:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_common.h:13:
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/platform_internal.h:14:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    14 | #pragma warning(disable : 5105)
[build]       |         ^
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_util.c:7:
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_util.h:15:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    15 | #pragma warning(disable : 5105)
[build]       |         ^
[build] 2 warnings generated.
[build] [11/88  11% :: 2.186] Building C object CMakeFiles/vmlib.dir/D_/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/platform_init.c.obj
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/platform_init.c:6:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_api_vmcore.h:9:
[build] In file included from D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/../include/platform_common.h:13:
[build] D:/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/platform_internal.h:14:9: warning: unknown pragma ignored [-Wunknown-pragmas]
[build]    14 | #pragma warning(disable : 5105)
[build]       |         ^
[build] 1 warning generated.
[build] [11/88  12% :: 2.304] Building CXX object CMakeFiles/vmlib.dir/D_/lch/Private/wasm_test/wasm-micro-runtime/core/shared/platform/windows/win_atomic.cpp.obj
[build] ninja: build stopped: subcommand failed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions