Before PR compilation failed because of two errors:
1 - Usage of CMake target_link_libraries()
Make Error at CMakeLists.txt:154 (target_link_libraries):
The keyword signature for target_link_libraries has already been used with
the target "iwasm_shared". All uses of target_link_libraries with a target
must be either all-keyword or all-plain.
The uses of the keyword signature are here:
* CMakeLists.txt:148 (target_link_libraries)
See https://stackoverflow.com/questions/47737558/uses-of-target-link-libraries-must-be-either-all-keyword-or-all-plain
Fixed by adding keyword INTERFACE
2 - Undefined symbols during linkage, fixed by adding -lwsock32.
This patch allows safer (note: safer, not safe) embedding in a plugin
environment where multiple instances of the engine could be needed.
Original code initializes and tears down the full runtime during
wasm_engine_new() and wasm_engine_delete() respectively. After this
update the C API implementation keeps track of engine instances count
and inits/deinits the runtime only when needed.
This allows for example to call wasm_engine_new() twice and then call
wasm_engine_delete() once without rendering the first engine instance
invalid.