如何构建C++;使用libjpeg库编程 我想用LIGBJPEG库来构建C++程序,但是当我尝试构建它时,我会在下面得到错误。 g++ main.cpp -o main.o main.cpp:26:22: warning: conversion from string literal to 'char *' is deprecated [- Wdeprecated-writable-strings] char *filename = "output.jpg"; ^ 1 warning generated. Undefined symbols for architecture x86_64: "_jpeg_CreateCompress", referenced from: _main in main-sUpMU6.o "_jpeg_destroy_compress", referenced from: _main in main-sUpMU6.o "_jpeg_finish_compress", referenced from: _main in main-sUpMU6.o "_jpeg_set_defaults", referenced from: _main in main-sUpMU6.o "_jpeg_set_quality", referenced from: _main in main-sUpMU6.o "_jpeg_start_compress", referenced from: _main in main-sUpMU6.o "_jpeg_std_error", referenced from: _main in main-sUpMU6.o "_jpeg_stdio_dest", referenced from: _main in main-sUpMU6.o "_jpeg_write_scanlines", referenced from: _main in main-sUpMU6.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [main.o] Error 1
我的项目结构是这样的如何构建C++;使用libjpeg库编程 我想用LIGBJPEG库来构建C++程序,但是当我尝试构建它时,我会在下面得到错误。 g++ main.cpp -o main.o main.cpp:26:22: warning: conversion from string literal to 'char *' is deprecated [- Wdeprecated-writable-strings] char *filename = "output.jpg"; ^ 1 warning generated. Undefined symbols for architecture x86_64: "_jpeg_CreateCompress", referenced from: _main in main-sUpMU6.o "_jpeg_destroy_compress", referenced from: _main in main-sUpMU6.o "_jpeg_finish_compress", referenced from: _main in main-sUpMU6.o "_jpeg_set_defaults", referenced from: _main in main-sUpMU6.o "_jpeg_set_quality", referenced from: _main in main-sUpMU6.o "_jpeg_start_compress", referenced from: _main in main-sUpMU6.o "_jpeg_std_error", referenced from: _main in main-sUpMU6.o "_jpeg_stdio_dest", referenced from: _main in main-sUpMU6.o "_jpeg_write_scanlines", referenced from: _main in main-sUpMU6.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [main.o] Error 1,c++,gcc,libjpeg,C++,Gcc,Libjpeg,我的项目结构是这样的 ./myCodes main.h main.cpp Makefile ./jpeg-9 libjpeg src and build outputs ulibjpeg: main.o g++ -v -L../jpeg-9/cjpeg -L../jpeg-9/djpeg -L../jpeg-9 -l../jpeg-9 -ljpeg main.o -o ulibjpeg main.o: main.cpp g++ main.cpp -o main
./myCodes
main.h main.cpp Makefile
./jpeg-9
libjpeg src and build outputs
ulibjpeg: main.o
g++ -v -L../jpeg-9/cjpeg -L../jpeg-9/djpeg -L../jpeg-9 -l../jpeg-9 -ljpeg main.o -o ulibjpeg
main.o: main.cpp
g++ main.cpp -o main.o
制作文件是这样的
./myCodes
main.h main.cpp Makefile
./jpeg-9
libjpeg src and build outputs
ulibjpeg: main.o
g++ -v -L../jpeg-9/cjpeg -L../jpeg-9/djpeg -L../jpeg-9 -l../jpeg-9 -ljpeg main.o -o ulibjpeg
main.o: main.cpp
g++ main.cpp -o main.o
我想我必须添加libjpeg库,但是我必须添加哪些文件,以及如何在g++选项中添加这些库
这是./jpeg-9目录的文件
Makefile jccoefct.c jcprepct.lo jdmarker.o jmemmgr.lo makefile.bcc rdjpgcom.1
Makefile.am jccoefct.lo jcprepct.o jdmaster.c jmemmgr.o makefile.dj rdjpgcom.c
Makefile.in jccoefct.o jcsample.c jdmaster.lo jmemname.c makefile.manx rdjpgcom.o
README jccolor.c jcsample.lo jdmaster.o jmemnobs.c makefile.mc6 rdppm.c
aclocal.m4 jccolor.lo jcsample.o jdmerge.c jmemnobs.lo makefile.mms rdppm.o
ar-lib jccolor.o jctrans.c jdmerge.lo jmemnobs.o makefile.sas rdrle.c
cderror.h jcdctmgr.c jctrans.lo jdmerge.o jmemsys.h makefile.unix rdrle.o
cdjpeg.c jcdctmgr.lo jctrans.o jdpostct.c jmorecfg.h makefile.vc rdswitch.c
cdjpeg.h jcdctmgr.o jdapimin.c jdpostct.lo jpegint.h makefile.vms rdswitch.o
cdjpeg.o jchuff.c jdapimin.lo jdpostct.o jpeglib.h makefile.wat rdtarga.c
change.log jchuff.lo jdapimin.o jdsample.c jpegtran makejdep.vc6 rdtarga.o
cjpeg jchuff.o jdapistd.c jdsample.lo jpegtran.1 makejdsp.vc6 stamp-h1
cjpeg.1 jcinit.c jdapistd.lo jdsample.o jpegtran.c makejdsw.vc6 structure.txt
cjpeg.c jcinit.lo jdapistd.o jdtrans.c jpegtran.o makejfil.v10 testimg.bmp
cjpeg.o jcinit.o jdarith.c jdtrans.lo jquant1.c makejmak.vc6 testimg.jpg
ckconfig.c jcmainct.c jdarith.lo jdtrans.o jquant1.lo makejsln.v10 testimg.ppm
coderules.txt jcmainct.lo jdarith.o jerror.c jquant1.o makejvcx.v10 testimgp.jpg
config.guess jcmainct.o jdatadst.c jerror.h jquant2.c makeproj.mac testorig.jpg
config.log jcmarker.c jdatadst.lo jerror.lo jquant2.lo makerdep.vc6 testprog.jpg
config.status jcmarker.lo jdatadst.o jerror.o jquant2.o makerdsp.vc6 transupp.c
config.sub jcmarker.o jdatasrc.c jfdctflt.c jutils.c makerfil.v10 transupp.h
configure jcmaster.c jdatasrc.lo jfdctflt.lo jutils.lo makermak.vc6 transupp.o
configure.ac jcmaster.lo jdatasrc.o jfdctflt.o jutils.o makervcx.v10 usage.txt
depcomp jcmaster.o jdcoefct.c jfdctfst.c jversion.h maketdep.vc6 wizard.txt
djpeg jcomapi.c jdcoefct.lo jfdctfst.lo libjpeg.la maketdsp.vc6 wrbmp.c
djpeg.1 jcomapi.lo jdcoefct.o jfdctfst.o libjpeg.map maketfil.v10 wrbmp.o
djpeg.c jcomapi.o jdcolor.c jfdctint.c libjpeg.txt maketmak.vc6 wrgif.c
djpeg.o jconfig.bcc jdcolor.lo jfdctint.lo libtool maketvcx.v10 wrgif.o
example.c jconfig.cfg jdcolor.o jfdctint.o ltmain.sh makewdep.vc6 wrjpgcom
filelist.txt jconfig.dj jdct.h jidctflt.c makcjpeg.st makewdsp.vc6 wrjpgcom.1
install-sh jconfig.h jddctmgr.c jidctflt.lo makdjpeg.st makewfil.v10 wrjpgcom.c
install.txt jconfig.mac jddctmgr.lo jidctflt.o makeadsw.vc6 makewmak.vc6 wrjpgcom.o
jaricom.c jconfig.manx jddctmgr.o jidctfst.c makeasln.v10 makewvcx.v10 wrppm.c
jaricom.lo jconfig.mc6 jdhuff.c jidctfst.lo makecdep.vc6 makljpeg.st wrppm.o
jaricom.o jconfig.sas jdhuff.lo jidctfst.o makecdsp.vc6 maktjpeg.st wrrle.c
jcapimin.c jconfig.st jdhuff.o jidctint.c makecfil.v10 makvms.opt wrrle.o
jcapimin.lo jconfig.txt jdinput.c jidctint.lo makecmak.vc6 missing wrtarga.c
jcapimin.o jconfig.vc jdinput.lo jidctint.o makecvcx.v10 rdbmp.c wrtarga.o
jcapistd.c jconfig.vms jdinput.o jinclude.h makeddep.vc6 rdbmp.o
jcapistd.lo jconfig.wat jdmainct.c jmemansi.c makeddsp.vc6 rdcolmap.c
jcapistd.o jcparam.c jdmainct.lo jmemdos.c makedfil.v10 rdcolmap.o
jcarith.c jcparam.lo jdmainct.o jmemdosa.asm makedmak.vc6 rdgif.c
jcarith.lo jcparam.o jdmarker.c jmemmac.c makedvcx.v10 rdgif.o
jcarith.o jcprepct.c jdmarker.lo jmemmgr.c makefile.ansi rdjpgcom
我想在多平台上使用该程序,因此我不希望安装libjpeg库。在compile命令中使用libjpeg:
gcc main.c -ljpeg -o main.o
我为C编写了一个教程:您忘记链接到库并使用了
const char*filename=“output.jpg”代码>感谢您的评论。库中包含哪些文件,如何添加?我是新手,所以我不明白…谢谢你的评论。我能够构建它,但我认为build命令使用已安装的libjpeg库。我不想使用已安装的libjpeg库,我想使用我自己构建的libjpeg库,可能在./jpeg-9目录中。我认为上面的build命令使用的是下面显示的其中一个jpeg库。MacBook Air:ulibjpeg machidahiroaki$sudo find/*-name jpeg/System/Library/Tcl/tcllib1.12/jpeg find:/dev/fd/3:非目录查找:/dev/fd/4:非目录/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/graphics/jpeg/usr/share/file/magic/jpeg