错误LNK2001:使用Visual C+的Pro*C代码的未解析引用+;

错误LNK2001:使用Visual C+的Pro*C代码的未解析引用+;,c,windows,visual-studio,oracle,C,Windows,Visual Studio,Oracle,尝试使用Pro*C预处理的C文件构建DLL文件时出错,我用于构建DLL的命令是: link /NOLOGO /DLL /SUBSYSTEM:WINDOWS /NODEFAULTLIB:libc.lib /IMPLIB:orasql11.lib /IMPLIB:orasqx11.lib /OUT:qvc.dll\ /IMPLIB:oraxa11.lib /IMPLIB:oci.lib \ /LIBPATH:"$(ORACLE_HOME)\precomp\lib\msvc" /LIB

尝试使用Pro*C预处理的C文件构建DLL文件时出错,我用于构建DLL的命令是:

link /NOLOGO /DLL /SUBSYSTEM:WINDOWS /NODEFAULTLIB:libc.lib /IMPLIB:orasql11.lib /IMPLIB:orasqx11.lib /OUT:qvc.dll\
    /IMPLIB:oraxa11.lib /IMPLIB:oci.lib \
    /LIBPATH:"$(ORACLE_HOME)\precomp\lib\msvc" /LIBPATH:"$(ORACLE_HOME)\precomp\lib" @files.lnk
错误是:

error LNK2019: unresolved external symbol _sqlcxt

如何解决此问题?

选项是为正在创建的导入库指定名称,而不是让链接器使用ProC库作为输入:

link /NOLOGO /DLL /SUBSYSTEM:WINDOWS /NODEFAULTLIB:libc.lib orasql11.lib orasqx11.lib /OUT:qvc.dll\
    oraxa11.lib oci.lib \
    /LIBPATH:"$(ORACLE_HOME)\precomp\lib\msvc" /LIBPATH:"$(ORACLE_HOME)\precomp\lib" @files.lnk

错误LNK2019:未解析的外部符号_sqlcxt在**Visual Studio VC++已解决错误**

如果您使用的是Oracle客户端,则可能会出现此错误,因为库已损坏(可能已损坏)。例如orasqx12.lib和orasqx12.lib。这些库可能有一些bug。如果您已经下载了Oracle Client 12.2.0.1,或者可能已经使用了早期版本,您就可以了。但是,如果您正在下载64位版本的Oracle数据库或Oracle客户端

  • 必须在项目解决方案的配置管理器中将Visual Studio平台更改为**64位,而不是32位**

  • 如果您是初学者,正在尝试学习如何在Visual Studio中使用Pro*C,您可能需要下载Express版本。因为该库文件(orasql11.lib)工作正常,不会出现此错误**\u sqlcxt**
  • 我想说,这个错误是由库引起的,它在寻找库中定义的函数,但找不到它,可能是因为它已损坏。我不确定。因为有很多人都有这个问题,所以我决定发布这个。此外,这仅适用于试图使用Visual Studio学习Pro*C的初学者。不适合专家。而且,在Oracle数据库的标准版本中可能不会出现此错误。
    .

    > P>我试图用以前的Visual C++ 2005项目链接Oracle数据库应用程序,但用Oracle 12C代替Oracle 11。p> orasql12.lib似乎是用添加下划线作为前缀的代码生成的,但visual studio需要一个导入库,而不带前导下划线

    因此,我通过重新生成orasql12.lib来解决这个问题。为此,必须在VisualStudio工具命令行控制台中使用DUMPBIN和LIB命令。在安装oraclesql12.dll的目录中打开VC++命令行控制台,然后键入:
    DUMPBIN/EXPORTS orasql12.dll>orasql12.def

    这将生成一个必须编辑的def文件,以便删除除名称列符号外的所有符号并添加两个标题行,orasql12.def文件的第一行如下所示:

    LIBRARY orasql12
         EXPORTS
     DSNTIAR
     ORASQL8
    ...
    
    然后在VC++工具控制台中使用LIB命令并键入:

    LIB/DEF:orasql12.DEF/MACHINE:X86/LIBPATH:D:\users\Appl\oracle\client\u 12c\bin

    (LIBPATH设置为orasql12.dll安装目录,如果需要,请更改X86)
    生成了一个新的orasql12.lib,但没有前导下划线。

    非常感谢,它解决了这个问题