当文件中有两个共享库时,我如何选择我需要的共享库



有两个共享库,它们的名称相同但后缀不同。例如(A.dll和A.lib(。现在,当我使用命令"make"生成C代码时,编译器会选择A.lib作为默认选项。那么我该如何选择我需要的灵活库呢?下面的代码是makefile的代码。

CC = gcc
COSI_LIB = '/C/A'
OBJ_NAME = B.exe
SOURCE =  B.c
${OBJ_NAME}: ${SOURCE}
    @$(CC) -I${COSI_LIB} -L${COSI_LIB} -lA -o ${OBJ_NAME} ${SOURCE}
clean:
    @rm $(OBJ_NAME) -r -f

我需要知道,当有两个相同名称但格式不同的文件(例如,一个名为abc.dll,另一个名为abc.lib(,并且我在term上输入命令"make"时,我希望编译器选择.dll文件而不是.lib文件。

首先,编译器不关心任何.lib.dll文件,只有链接器关心。

其次,在Windows上,链接器从不使用.dlls。它始终使用.lib,并且它是包含.o文件(直接链接到二进制文件中(、.lib文件;dll导入";,其告诉链接器建立";导入表";以便在运行时用于从对应的CCD_ 7导入函数。

也就是说(与UNIX不同(,无法决定是针对.lib还是针对.dll进行链接(始终针对.lib进行链接(。无论是谁构建了.lib.dll,都决定了哪些部件(如果有(要直接链接,哪些部件要从.dll导入。

相关内容

最新更新