问题描述
我正在尝试在DevCpp项目中使用名为 crypto 的库:
为此,我已将库文件添加到“链接器参数”,并将项目目录添加到“项目选项”中的“库,包含和资源目录”,如下所示:
最后,我将头文件导入了main.cpp文件,并从库中调用了一个函数:
#include <iostream>
#include <crypto.h>
int main() {
void * ctx;
initGP(&ctx,(char *)"123456",(char *)"TEST");
return 0;
}
但是当我尝试编译代码时,在链接时间内我遇到库函数的未定义引用错误:
我的制作文件:
# Project: Project1
# Makefile created by Dev-C++ 5.11
CPP = g++.exe
CC = gcc.exe
WINDRES = windres.exe
OBJ = main.o
LINKOBJ = main.o
LIBS = -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib32" -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib32" -static-libgcc -L"C:/Users/user/Desktop/prj" crypto.dll crypto.lib -m32
INCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"C:/Users/user/Desktop/prj"
CXXINCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++" -I"C:/Users/user/Desktop/prj"
BIN = Project1.exe
CXXFLAGS = $(CXXINCS) -m32
CFLAGS = $(INCS) -m32
RM = rm.exe -f
.PHONY: all all-before all-after clean clean-custom
all: all-before $(BIN) all-after
clean: clean-custom
${RM} $(OBJ) $(BIN)
$(BIN): $(OBJ)
$(CPP) $(LINKOBJ) -o $(BIN) $(LIBS)
main.o: main.cpp
$(CPP) -c main.cpp -o main.o $(CXXFLAGS)
问题:出什么问题了,我该如何解决该问题?
解决方法
您不链接.dll
,而是链接库并将.dll
保留在可执行文件旁边。您看到的错误很可能是因为它无法确定.dll
文件是哪种类型的库。
此外,.lib
文件是MSVC库。 gcc需要.a
,.o
或.so
。