Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library
Forum Updated to NodeBB v4.3 + New Features

LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library

Scheduled Pinned Locked Moved Solved General and Desktop
8 Posts 2 Posters 3.5k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    Aditya1309
    wrote on last edited by
    #1

    Hi,
    I am trying to use third party PDF viewer library libmupdf compiled successfully in MS visual studio(32 bit), But I am facing issues when I am trying to build sample application in QT.

    LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library
    QT version : 5.9 community edition ( MSVC2015 32 bit compiler ).
    mupdf version: mupdf-1.12.0-source.tar.gz

    https://mupdf.com/docs/index.html

    #include <mupdf/fitz.h>

    int main(int argc, char **argv)
    {
    char *input;
    float zoom, rotate;
    int page_number, page_count;
    fz_context *ctx;
    fz_document *doc;
    fz_pixmap *pix;
    fz_matrix ctm;
    int x, y;

    if (argc < 3)
    {
    	fprintf(stderr, "usage: example input-file page-number [ zoom [ rotate ] ]\n");
    	fprintf(stderr, "\tinput-file: path of PDF, XPS, CBZ or EPUB document to open\n");
    	fprintf(stderr, "\tPage numbering starts from one.\n");
    	fprintf(stderr, "\tZoom level is in percent (100 percent is 72 dpi).\n");
    	fprintf(stderr, "\tRotation is in degrees clockwise.\n");
    	return EXIT_FAILURE;
    }
    
    input = argv[1];
    page_number = atoi(argv[2]) - 1;
    zoom = argc > 3 ? atof(argv[3]) : 100;
    rotate = argc > 4 ? atof(argv[4]) : 0;
    
    /* Create a context to hold the exception stack and various caches. */
    ctx = fz_new_context(NULL, NULL, FZ_STORE_UNLIMITED);
    if (!ctx)
    {
    	fprintf(stderr, "cannot create mupdf context\n");
    	return EXIT_FAILURE;
    }
    
    /* Register the default file types to handle. */
    fz_try(ctx)
    	fz_register_document_handlers(ctx);
    fz_catch(ctx)
    {
    	fprintf(stderr, "cannot register document handlers: %s\n", fz_caught_message(ctx));
    	fz_drop_context(ctx);
    	return EXIT_FAILURE;
    }
    
    /* Open the document. */
    fz_try(ctx)
    	doc = fz_open_document(ctx, input);
    fz_catch(ctx)
    {
    	fprintf(stderr, "cannot open document: %s\n", fz_caught_message(ctx));
    	fz_drop_context(ctx);
    	return EXIT_FAILURE;
    }
    
    /* Count the number of pages. */
    fz_try(ctx)
    	page_count = fz_count_pages(ctx, doc);
    fz_catch(ctx)
    {
    	fprintf(stderr, "cannot count number of pages: %s\n", fz_caught_message(ctx));
    	fz_drop_document(ctx, doc);
    	fz_drop_context(ctx);
    	return EXIT_FAILURE;
    }
    
    if (page_number < 0 || page_number >= page_count)
    {
    	fprintf(stderr, "page number out of range: %d (page count %d)\n", page_number + 1, page_count);
    	fz_drop_document(ctx, doc);
    	fz_drop_context(ctx);
    	return EXIT_FAILURE;
    }
    
    /* Compute a transformation matrix for the zoom and rotation desired. */
    /* The default resolution without scaling is 72 dpi. */
    fz_scale(&ctm, zoom / 100, zoom / 100);
    fz_pre_rotate(&ctm, rotate);
    
    /* Render page to an RGB pixmap. */
    fz_try(ctx)
    	pix = fz_new_pixmap_from_page_number(ctx, doc, page_number, &ctm, fz_device_rgb(ctx));
    fz_catch(ctx)
    {
    	fprintf(stderr, "cannot render page: %s\n", fz_caught_message(ctx));
    	fz_drop_document(ctx, doc);
    	fz_drop_context(ctx);
    	return EXIT_FAILURE;
    }
    
    /* Print image data in ascii PPM format. */
    printf("P3\n");
    printf("%d %d\n", pix->w, pix->h);
    printf("255\n");
    for (y = 0; y < pix->h; ++y)
    {
    	unsigned char *p = &pix->samples[y * pix->w * pix->n];
    	for (x = 0; x < pix->w; ++x)
    	{
    		if (x > 0)
    			printf("  ");
    		printf("%3d %3d %3d", p[0], p[1], p[2]);
    		p += 4;
    	}
    	printf("\n");
    }
    
    /* Clean up. */
    fz_drop_pixmap(ctx, pix);
    fz_drop_document(ctx, doc);
    fz_drop_context(ctx);
    return EXIT_SUCCESS;
    

    }

    jsulmJ 1 Reply Last reply
    0
    • A Offline
      A Offline
      Aditya1309
      wrote on last edited by
      #6

      Now I am able to compile, I have to move my release lib to debug lib folder in order to deal with some link issues.

      #-------------------------------------------------

      Project created by QtCreator 2017-12-18T12:49:07

      #-------------------------------------------------

      QT += core gui

      greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

      TARGET = PdfViewer1
      TEMPLATE = app

      The following define makes your compiler emit warnings if you use

      any feature of Qt which as been marked as deprecated (the exact warnings

      depend on your compiler). Please consult the documentation of the

      deprecated API in order to know how to port your code away from it.

      DEFINES += QT_DEPRECATED_WARNINGS

      You can also make your code fail to compile if you use deprecated APIs.

      In order to do so, uncomment the following line.

      You can also select to disable deprecated APIs only up to a certain version of Qt.

      #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0

      SOURCES +=
      main.cpp
      mywidget.cpp

      HEADERS +=
      mywidget.h

      FORMS +=
      mywidget.ui

      win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/release/ -llibmupdf
      else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/debug/ -llibmupdf

      INCLUDEPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include
      DEPENDPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include

      win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/release/ -llibresources
      else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/debug/ -llibresources

      INCLUDEPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include
      DEPENDPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include

      win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/release/ -llibthirdparty
      else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/debug/ -llibthirdparty

      INCLUDEPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include
      DEPENDPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include

      jsulmJ 1 Reply Last reply
      0
      • A Aditya1309

        Hi,
        I am trying to use third party PDF viewer library libmupdf compiled successfully in MS visual studio(32 bit), But I am facing issues when I am trying to build sample application in QT.

        LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library
        QT version : 5.9 community edition ( MSVC2015 32 bit compiler ).
        mupdf version: mupdf-1.12.0-source.tar.gz

        https://mupdf.com/docs/index.html

        #include <mupdf/fitz.h>

        int main(int argc, char **argv)
        {
        char *input;
        float zoom, rotate;
        int page_number, page_count;
        fz_context *ctx;
        fz_document *doc;
        fz_pixmap *pix;
        fz_matrix ctm;
        int x, y;

        if (argc < 3)
        {
        	fprintf(stderr, "usage: example input-file page-number [ zoom [ rotate ] ]\n");
        	fprintf(stderr, "\tinput-file: path of PDF, XPS, CBZ or EPUB document to open\n");
        	fprintf(stderr, "\tPage numbering starts from one.\n");
        	fprintf(stderr, "\tZoom level is in percent (100 percent is 72 dpi).\n");
        	fprintf(stderr, "\tRotation is in degrees clockwise.\n");
        	return EXIT_FAILURE;
        }
        
        input = argv[1];
        page_number = atoi(argv[2]) - 1;
        zoom = argc > 3 ? atof(argv[3]) : 100;
        rotate = argc > 4 ? atof(argv[4]) : 0;
        
        /* Create a context to hold the exception stack and various caches. */
        ctx = fz_new_context(NULL, NULL, FZ_STORE_UNLIMITED);
        if (!ctx)
        {
        	fprintf(stderr, "cannot create mupdf context\n");
        	return EXIT_FAILURE;
        }
        
        /* Register the default file types to handle. */
        fz_try(ctx)
        	fz_register_document_handlers(ctx);
        fz_catch(ctx)
        {
        	fprintf(stderr, "cannot register document handlers: %s\n", fz_caught_message(ctx));
        	fz_drop_context(ctx);
        	return EXIT_FAILURE;
        }
        
        /* Open the document. */
        fz_try(ctx)
        	doc = fz_open_document(ctx, input);
        fz_catch(ctx)
        {
        	fprintf(stderr, "cannot open document: %s\n", fz_caught_message(ctx));
        	fz_drop_context(ctx);
        	return EXIT_FAILURE;
        }
        
        /* Count the number of pages. */
        fz_try(ctx)
        	page_count = fz_count_pages(ctx, doc);
        fz_catch(ctx)
        {
        	fprintf(stderr, "cannot count number of pages: %s\n", fz_caught_message(ctx));
        	fz_drop_document(ctx, doc);
        	fz_drop_context(ctx);
        	return EXIT_FAILURE;
        }
        
        if (page_number < 0 || page_number >= page_count)
        {
        	fprintf(stderr, "page number out of range: %d (page count %d)\n", page_number + 1, page_count);
        	fz_drop_document(ctx, doc);
        	fz_drop_context(ctx);
        	return EXIT_FAILURE;
        }
        
        /* Compute a transformation matrix for the zoom and rotation desired. */
        /* The default resolution without scaling is 72 dpi. */
        fz_scale(&ctm, zoom / 100, zoom / 100);
        fz_pre_rotate(&ctm, rotate);
        
        /* Render page to an RGB pixmap. */
        fz_try(ctx)
        	pix = fz_new_pixmap_from_page_number(ctx, doc, page_number, &ctm, fz_device_rgb(ctx));
        fz_catch(ctx)
        {
        	fprintf(stderr, "cannot render page: %s\n", fz_caught_message(ctx));
        	fz_drop_document(ctx, doc);
        	fz_drop_context(ctx);
        	return EXIT_FAILURE;
        }
        
        /* Print image data in ascii PPM format. */
        printf("P3\n");
        printf("%d %d\n", pix->w, pix->h);
        printf("255\n");
        for (y = 0; y < pix->h; ++y)
        {
        	unsigned char *p = &pix->samples[y * pix->w * pix->n];
        	for (x = 0; x < pix->w; ++x)
        	{
        		if (x > 0)
        			printf("  ");
        		printf("%3d %3d %3d", p[0], p[1], p[2]);
        		p += 4;
        	}
        	printf("\n");
        }
        
        /* Clean up. */
        fz_drop_pixmap(ctx, pix);
        fz_drop_document(ctx, doc);
        fz_drop_context(ctx);
        return EXIT_SUCCESS;
        

        }

        jsulmJ Offline
        jsulmJ Offline
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #2

        @Aditya1309 This is a warning. Are there any errors? Is you app working?

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        A 1 Reply Last reply
        0
        • A Offline
          A Offline
          Aditya1309
          wrote on last edited by
          #3

          Its not working, I am not able to get it compiled.

          1 Reply Last reply
          0
          • jsulmJ jsulm

            @Aditya1309 This is a warning. Are there any errors? Is you app working?

            A Offline
            A Offline
            Aditya1309
            wrote on last edited by
            #4

            @jsulm I am facing linking issues, But I have included libmupdf and libthirdparty compiled from source code.

            jsulmJ 1 Reply Last reply
            0
            • A Aditya1309

              @jsulm I am facing linking issues, But I have included libmupdf and libthirdparty compiled from source code.

              jsulmJ Offline
              jsulmJ Offline
              jsulm
              Lifetime Qt Champion
              wrote on last edited by
              #5

              @Aditya1309 What other issues do you have? Because the one you posted is a warning, not an error.
              Can you show your pro file?

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              1 Reply Last reply
              0
              • A Offline
                A Offline
                Aditya1309
                wrote on last edited by
                #6

                Now I am able to compile, I have to move my release lib to debug lib folder in order to deal with some link issues.

                #-------------------------------------------------

                Project created by QtCreator 2017-12-18T12:49:07

                #-------------------------------------------------

                QT += core gui

                greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

                TARGET = PdfViewer1
                TEMPLATE = app

                The following define makes your compiler emit warnings if you use

                any feature of Qt which as been marked as deprecated (the exact warnings

                depend on your compiler). Please consult the documentation of the

                deprecated API in order to know how to port your code away from it.

                DEFINES += QT_DEPRECATED_WARNINGS

                You can also make your code fail to compile if you use deprecated APIs.

                In order to do so, uncomment the following line.

                You can also select to disable deprecated APIs only up to a certain version of Qt.

                #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0

                SOURCES +=
                main.cpp
                mywidget.cpp

                HEADERS +=
                mywidget.h

                FORMS +=
                mywidget.ui

                win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/release/ -llibmupdf
                else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/debug/ -llibmupdf

                INCLUDEPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include
                DEPENDPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include

                win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/release/ -llibresources
                else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/debug/ -llibresources

                INCLUDEPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include
                DEPENDPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include

                win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/release/ -llibthirdparty
                else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/debug/ -llibthirdparty

                INCLUDEPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include
                DEPENDPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include

                jsulmJ 1 Reply Last reply
                0
                • A Aditya1309

                  Now I am able to compile, I have to move my release lib to debug lib folder in order to deal with some link issues.

                  #-------------------------------------------------

                  Project created by QtCreator 2017-12-18T12:49:07

                  #-------------------------------------------------

                  QT += core gui

                  greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

                  TARGET = PdfViewer1
                  TEMPLATE = app

                  The following define makes your compiler emit warnings if you use

                  any feature of Qt which as been marked as deprecated (the exact warnings

                  depend on your compiler). Please consult the documentation of the

                  deprecated API in order to know how to port your code away from it.

                  DEFINES += QT_DEPRECATED_WARNINGS

                  You can also make your code fail to compile if you use deprecated APIs.

                  In order to do so, uncomment the following line.

                  You can also select to disable deprecated APIs only up to a certain version of Qt.

                  #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0

                  SOURCES +=
                  main.cpp
                  mywidget.cpp

                  HEADERS +=
                  mywidget.h

                  FORMS +=
                  mywidget.ui

                  win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/release/ -llibmupdf
                  else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/debug/ -llibmupdf

                  INCLUDEPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include
                  DEPENDPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include

                  win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/release/ -llibresources
                  else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/debug/ -llibresources

                  INCLUDEPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include
                  DEPENDPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include

                  win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/release/ -llibthirdparty
                  else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../mupdf/mupdf-1.12.0-source/platform/win32/debug/ -llibthirdparty

                  INCLUDEPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include
                  DEPENDPATH += $$PWD/../../../mupdf/mupdf-1.12.0-source/include

                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on last edited by
                  #7

                  @Aditya1309
                  You should remove the lib prefix:

                  -lmupdf
                  -lresources

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  0
                  • A Offline
                    A Offline
                    Aditya1309
                    wrote on last edited by
                    #8

                    Its complaining that -lmupdf is not found.

                    1 Reply Last reply
                    0

                    • Login

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • Users
                    • Groups
                    • Search
                    • Get Qt Extensions
                    • Unsolved