c++ - 使用 g++ 在 Windows 上生成文件,链接库

标签 c++ windows makefile g++

我已经受够了 MSVC++6 以及每个人总是告诉我它是一个蹩脚的编译器等等。

所以现在我决定尝试使用 vim 加上 g++ 和 makefile。这是我的问题;我有以下生成文件:

# This is supposed to be a comment..
CC = g++
# The line above sets the compiler in use..
# The next line sets the compilation flags
CFLAGS=-c -Wall

all: main.exe

main.exe: main.o Accel.o
    $(CC) -o main.exe main.o Accel.o 

main.o: main.cpp Accel.h
    $(CC) $(CFLAGS) main.cpp

Accel.o: Accel.cpp Accel.h
    $(CC) $(CFLAGS) Accel.cpp

clean:
    del main.exe *.o

这在尝试make 时会出错,因为我需要链接到名为Ws2_32.lib 的Windows 库,Winsock2.h 需要它,我将其包含在我的一个 .h 文件中。

那我该怎么做呢?我试过 -l 选项,但我无法让它工作。它如何处理包含空格的路径?

最佳答案

第一步:找到您要查找的库。对我来说,它在:

C:\Program Files\Microsoft Visual Studio\VC98\Lib

第二步,使用 -L 传递该目录:

LINKFLAGS=-L"C:\Program Files\Microsoft Visual Studio\VC98\Lib"

第三步,用-l(小写L)传递库名:

LINKFLAGS=-L"C:\Program Files\Microsoft Visual Studio\VC98\Lib" -lWs2_32

然后使用它:

main.exe: main.o Accel.o
   $(CC) $(LINKFLAGS) -o main.exe main.o Accel.o 

关于c++ - 使用 g++ 在 Windows 上生成文件,链接库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/577006/

相关文章:

c++ - 从 dll 链接静态成员

c++ - 尝试从某个 COM 端口读取/写入时程序无法执行

Makefile - 从路径中删除 ../

c++ - regex_replace 问题

c++ - 在 C++ 中将模板类引用作为参数传递

c++ - Windows QueueUserWorkItem C++ Release模式问题

c++ - 非递归(non-recursive) Automake

为 C 程序创建 makefile

c++ - `libusb_attach_kernel_driver` 不工作

c++ - 为什么 MinGW 会自动包含 <windef.h>