0

我遇到的链接错误有问题:

错误 112 错误 LNK2019:未解析的外部符号 HPDF_Stream_WriteToStreamWithDeflate 在函数 HPDF_Stream_WriteToStream C:\Users\tykab\OneDrive\Dokumenty\Visual Studio 2013\Projects\PDF2\PDF2\hpdf_streams.obj PDF2 中引用

错误 111 错误 LNK2019:函数 LoadPngImageFromStream C:\Users\tykab\OneDrive\Dokumenty\Visual Studio 2013\Projects\PDF2\PDF2\hpdf_doc_png.obj 中引用的未解析外部符号 HPDF_Image_LoadPngImage

错误 113 error LNK1120: 2 unresolved externals C:\Users\tykab\OneDrive\Dokumenty\Visual Studio 2013\Projects\PDF2\Toradex_CE800\Debug\PDF2.exe PDF2

我在这个项目中使用 Visual Studio 2013。源代码是用 C 编程语言编写的,我使用与错误相关的 Hpdf_stream.h 的 C++ 头文件具有外部“C”标识符。我把这个标题的代码放在下面:

#ifndef _HPDF_STREAMS_H
#define _HPDF_STREAMS_H

#include "hpdf_list.h"
#include "hpdf_encrypt.h"

#ifdef __cplusplus
extern "C" {
#endif


#define HPDF_STREAM_SIG_BYTES  0x5354524DL

typedef enum _HPDF_StreamType {
    HPDF_STREAM_UNKNOWN = 0,
    HPDF_STREAM_CALLBACK,
    HPDF_STREAM_FILE,
    HPDF_STREAM_MEMORY
} HPDF_StreamType;

#define HPDF_STREAM_FILTER_NONE          0x0000
#define HPDF_STREAM_FILTER_ASCIIHEX      0x0100
#define HPDF_STREAM_FILTER_ASCII85       0x0200
#define HPDF_STREAM_FILTER_FLATE_DECODE  0x0400
#define HPDF_STREAM_FILTER_DCT_DECODE    0x0800
#define HPDF_STREAM_FILTER_CCITT_DECODE  0x1000

typedef enum _HPDF_WhenceMode {
    HPDF_SEEK_SET = 0,
    HPDF_SEEK_CUR,
    HPDF_SEEK_END
} HPDF_WhenceMode;

typedef struct _HPDF_Stream_Rec  *HPDF_Stream;

typedef HPDF_STATUS
(*HPDF_Stream_Write_Func)  (HPDF_Stream      stream,
                            const HPDF_BYTE  *ptr,
                            HPDF_UINT        siz);


typedef HPDF_STATUS
(*HPDF_Stream_Read_Func)  (HPDF_Stream  stream,
                           HPDF_BYTE    *ptr,
                           HPDF_UINT    *siz);


typedef HPDF_STATUS
(*HPDF_Stream_Seek_Func)  (HPDF_Stream      stream,
                           HPDF_INT         pos,
                           HPDF_WhenceMode  mode);


typedef HPDF_INT32
(*HPDF_Stream_Tell_Func)  (HPDF_Stream      stream);


typedef void
(*HPDF_Stream_Free_Func)  (HPDF_Stream  stream);


typedef HPDF_UINT32
(*HPDF_Stream_Size_Func)  (HPDF_Stream  stream);


typedef struct _HPDF_MemStreamAttr_Rec  *HPDF_MemStreamAttr;


typedef struct _HPDF_MemStreamAttr_Rec {
    HPDF_List  buf;
    HPDF_UINT  buf_siz;
    HPDF_UINT  w_pos;
    HPDF_BYTE  *w_ptr;
    HPDF_UINT  r_ptr_idx;
    HPDF_UINT  r_pos;
    HPDF_BYTE  *r_ptr;
} HPDF_MemStreamAttr_Rec;


 typedef struct _HPDF_Stream_Rec {
    HPDF_UINT32               sig_bytes;
    HPDF_StreamType           type;
    HPDF_MMgr                 mmgr;
    HPDF_Error                error;
    HPDF_UINT                 size;
    HPDF_Stream_Write_Func    write_fn;
    HPDF_Stream_Read_Func     read_fn;
    HPDF_Stream_Seek_Func     seek_fn;
    HPDF_Stream_Free_Func     free_fn;
    HPDF_Stream_Tell_Func     tell_fn;
    HPDF_Stream_Size_Func     size_fn;
    void*                     attr;
} HPDF_Stream_Rec;


 int
     main(int argc, char **argv);
__declspec(dllimport) HPDF_Stream
HPDF_MemStream_New  (HPDF_MMgr  mmgr,
                     HPDF_UINT  buf_siz);


__declspec(dllimport) HPDF_BYTE*
HPDF_MemStream_GetBufPtr  (HPDF_Stream  stream,
                           HPDF_UINT    index,
                           HPDF_UINT    *length);


 HPDF_UINT __cdecl
HPDF_MemStream_GetBufSize(HPDF_Stream  stream);


HPDF_UINT __cdecl
HPDF_MemStream_GetBufCount  (HPDF_Stream  stream);


__declspec(dllimport) HPDF_STATUS
HPDF_MemStream_Rewrite  (HPDF_Stream  stream,
                         HPDF_BYTE    *buf,
                         HPDF_UINT    size);


__declspec(dllimport) void
HPDF_MemStream_FreeData  (HPDF_Stream  stream);


HPDF_STATUS __cdecl
HPDF_Stream_WriteToStream  (HPDF_Stream   src,
                            HPDF_Stream   dst,
                            HPDF_UINT     filter,
                            HPDF_Encrypt  e);


__declspec(dllimport) HPDF_Stream
HPDF_FileReader_New  (HPDF_MMgr   mmgr,
                      const char  *fname);


__declspec(dllimport) HPDF_Stream
HPDF_FileWriter_New  (HPDF_MMgr        mmgr,
                      const char  *fname);


__declspec(dllimport) HPDF_Stream
HPDF_CallbackReader_New  (HPDF_MMgr              mmgr,
                          HPDF_Stream_Read_Func  read_fn,
                          HPDF_Stream_Seek_Func  seek_fn,
                          HPDF_Stream_Tell_Func  tell_fn,
                          HPDF_Stream_Size_Func  size_fn,
                          void*                  data);


__declspec(dllimport) HPDF_Stream
HPDF_CallbackWriter_New (HPDF_MMgr               mmgr,
                         HPDF_Stream_Write_Func  write_fn,
                         void*                   data);


__declspec(dllimport) void
HPDF_Stream_Free  (HPDF_Stream  stream);


__declspec(dllimport) HPDF_STATUS
HPDF_Stream_WriteChar  (HPDF_Stream  stream,
                        char    value);


__declspec(dllimport) HPDF_STATUS
HPDF_Stream_WriteStr  (HPDF_Stream      stream,
                       const char  *value);


HPDF_STATUS
HPDF_Stream_WriteUChar  (HPDF_Stream  stream,
                         HPDF_BYTE    value);


__declspec(dllimport) HPDF_STATUS
HPDF_Stream_WriteInt  (HPDF_Stream  stream,
                       HPDF_INT     value);


__declspec(dllimport) HPDF_STATUS
HPDF_Stream_WriteUInt  (HPDF_Stream  stream,
                        HPDF_UINT    value);


__declspec(dllimport) HPDF_STATUS
HPDF_Stream_WriteReal  (HPDF_Stream  stream,
                        HPDF_REAL    value);


__declspec(dllimport) HPDF_STATUS
HPDF_Stream_Write  (HPDF_Stream      stream,
                    const HPDF_BYTE  *ptr,
                    HPDF_UINT        size);


__declspec(dllimport) HPDF_STATUS
HPDF_Stream_Read  (HPDF_Stream  stream,
                   HPDF_BYTE    *ptr,
                   HPDF_UINT    *size);

__declspec(dllimport) HPDF_STATUS
HPDF_Stream_ReadLn  (HPDF_Stream  stream,
                     char    *s,
                     HPDF_UINT    *size);


__declspec(dllimport) HPDF_INT32
HPDF_Stream_Tell  (HPDF_Stream  stream);


__declspec(dllimport) HPDF_STATUS
HPDF_Stream_Seek  (HPDF_Stream      stream,
                   HPDF_INT         pos,
                   HPDF_WhenceMode  mode);


__declspec(dllimport) HPDF_BOOL
HPDF_Stream_EOF  (HPDF_Stream  stream);


__declspec(dllimport) HPDF_UINT32
HPDF_Stream_Size  (HPDF_Stream  stream);

__declspec(dllimport) HPDF_STATUS
HPDF_Stream_Flush  (HPDF_Stream  stream);


__declspec(dllimport) HPDF_STATUS
HPDF_Stream_WriteEscapeName  (HPDF_Stream      stream,
                              const char  *value);


__declspec(dllimport) HPDF_STATUS
HPDF_Stream_WriteEscapeText2  (HPDF_Stream    stream,
                               const char    *text,
                               HPDF_UINT      len);


__declspec(dllimport) HPDF_STATUS
HPDF_Stream_WriteEscapeText  (HPDF_Stream      stream,
                              const char  *text);


__declspec(dllimport) HPDF_STATUS
HPDF_Stream_WriteBinary  (HPDF_Stream      stream,
                          const HPDF_BYTE  *data,
                          HPDF_UINT        len,
                          HPDF_Encrypt     e);


__declspec(dllimport) HPDF_STATUS
HPDF_Stream_Validate  (HPDF_Stream  stream);


#ifdef __cplusplus
}
#endif  __cplusplus 

#endif _HPDF_STREAMS_H 

以下是导致链接错误的调用函数:

    void CPDF2View::OnInitialUpdate()
{
    CView::OnInitialUpdate();
    AfxGetMainWnd()->ActivateTopParent();

    HPDF_Doc pdf;
    pdf = HPDF_New(error_handler, NULL);
    HPDF_Page page_1;

    page_1 = HPDF_AddPage(pdf);
    HPDF_SaveToFile(pdf, "test.pdf");

    Invalidate(TRUE);
}

我使用 /VERBOSE 来诊断链接器输出,我得到了未使用 hpdflib.lib 的信息。某人可以解释什么是问题吗?

4

0 回答 0