我使用 SWIG 包装器成功地将我的 C 扩展编译为 TCL,它在 Linux 中工作,并在 MSYS64 环境中的 Windows 下成功编译(没有错误或警告),但是当我尝试在 TCL 脚本中加载此模块时,我得到了以下信息:
this library or a dependent library could not be found in library path
我的Makefile是:
all: filter.dll
CC=gcc
BUILD=build
filter.dll: $(BUILD)/filter.o $(BUILD)/filter_wrap.o
mkdir -p $(BUILD)
$(CC) -shared $(BUILD)/filter.o $(BUILD)/filter_wrap.o $(BUILD)/../tclStubLib.o -o $(BUILD)/filter.dll
$(BUILD)/filter.o: filter.h filter.c
mkdir -p $(BUILD)
$(CC) -c filter.c -fPIC -Wall -O3 -g -march=native -o $(BUILD)/filter.o
$(BUILD)/filter_wrap.o: filter_wrap.c filter.h
mkdir -p $(BUILD)
$(CC) -c filter_wrap.c -I\C:\msys64\usr\lib\tcl8.6 -fPIC -O3 -DUSE_TCL_STUBS -o $(BUILD)/filter_wrap.o
清洁: rm -rf $(BUILD) filter.dll
显然缺少一些库,但我不明白是哪些库。预先感谢您!
问题的根源是错误的MSYS环境,应该是MINGW64