Make 说它与所有人无关。我已经在互联网上搜索过,它说这件事的情况有几十种。虽然没有任何解决方案有帮助......
我使用 MinGW,在我的目录中,我有,Res.def
和运行后得到的.Res.h
Res.cpp
Res.o
g++ -c Res.cpp
这是生成文件:
CFLAGS = -c -G3 -GX -Od -W3 -Zi -D_X86_=1 -DWIN32 -D_WIN32 -nologo -DSTRICT
LFLAGS = -debug:mapped,full -debugtype:cv -nologo
LIBS = libc.lib kernel32.lib user32.lib
SRCS = Res.def Res.cpp Res.h
OBJS = Res.o
all: Res.dll
Res.dll: $(SRCS) $(OBJS)
$(SRCS):
co $(SRCS)
.cpp.obj:
cl $(CFLAGS) $*.cpp
.rc.rbj:
rc $*.rc
cvtres -i386 $*.res -o $*.rbj
.obj.dll:
link $(LFLAGS) -DLL -subsystem:windows -out:$*.dll \
-def:$*.def $(OBJS) $(LIBS)
.obj.exe:
link $(LFLAGS) -subsystem:console -out:$*.exe \
$*.obj $(EXELIBS)
我如何制作dll?
更新:
我来自 Java,当我能够理解 C 或 C++ 时,我完全不擅长制作文件,因此我试图在对代码进行一些更改后重新组装一个开源 dll。我已经阅读了有关构建 C 应用程序的信息,但它并没有太大帮助。原始的make文件有OBJS
不同的行,它是
OBJS = Res.obj
OBJS = Res.o
当试图以某种方式设法构建 dll 时,我已将其更改为。所以原始文件是:
CFLAGS = -c -G3 -GX -Od -W3 -Zi -D_X86_=1 -DWIN32 -D_WIN32 -nologo -DSTRICT
LFLAGS = -debug:mapped,full -debugtype:cv -nologo
LIBS = libc.lib kernel32.lib user32.lib
SRCS = Res.def Res.cpp Res.h
OBJS = Res.obj
all: Res.dll
Res.dll: $(SRCS) $(OBJS)
$(SRCS):
co $(SRCS)
.cpp.obj:
cl $(CFLAGS) $*.cpp
.rc.rbj:
rc $*.rc
cvtres -i386 $*.res -o $*.rbj
.obj.dll:
link $(LFLAGS) -DLL -subsystem:windows -out:$*.dll \
-def:$*.def $(OBJS) $(LIBS)
.obj.exe:
link $(LFLAGS) -subsystem:console -out:$*.exe \
$*.obj $(EXELIBS)
使用该默认行,它在说另一件事:
*** No rule to make target `Res.obj`, needed by `Res.dll`. Stop.
请你能告诉我如何组装这个简单的dll吗?我完全迷路了。在我看来,对于从单个源文件构建库这样简单的任务来说,这些复杂性有点过头了......?