首页 文章

OCIObjectGetAttr和OCIObjectSetAttr的LNK2091错误

提问于
浏览
0

我有一个静态链接到oci.lib(12.1.0.1.0)的小型Windows x64控制台程序,到目前为止一直运行良好,直到我尝试使用API OCIObjectGetAttr / OCIObjectSetAttr . 现在我的程序给出了以下链接器错误:

  • 错误19错误LNK2019:未解析的外部符号“int __cdecl OCIObjectSetAttr(struct OCIEnv *,struct OCIError *,void *,void *,struct OCIType *,unsigned char const * *,unsigned int const *,unsigned int,unsigned int const * ,unsigned int,short,void const *,void const *)“(?OCIObjectSetAttr @@ YAHPEAUOCIEnv @@ PEAUOCIError @@ PEAX2PEAUOCIType @@ PEAPEBEPEBII5IFPEBX6 @ Z)在函数”bool __cdecl dump_object中引用(struct OCIEnv *,struct OCIError *,struct OCISvcCtx *,void *,void *,void *)“(?dump_object @@ YA_NPEAUOCIEnv @@ PEAUOCIError @@ PEAUOCISvcCtx @@ PEAX33 @ Z)

  • 错误20错误LNK2019:未解析的外部符号“int __cdecl OCIObjectGetAttr(struct OCIEnv *,struct OCIError *,void *,void *,struct OCIType *,unsigned char const * *,unsigned int const *,unsigned int,unsigned int const * ,unsigned int,short *,void * *,void * *,struct OCIType * )“(?OCIObjectGetAttr @@ YAHPEAUOCIEnv @@ PEAUOCIError @@ PEAX2PEAUOCIType @@ PEAPEBEPEBII5IPEAFPEAPEAX7PEAPEAU3 @@ Z)在函数”bool __cdecl dump_object(struct OCIEnv)中引用,struct OCIError *,struct OCISvcCtx *,void *,void *,void *)“(?dump_object @@ YA_NPEAUOCIEnv @@ PEAUOCIError @@ PEAUOCISvcCtx @@ PEAX33 @ Z)

仅评论这两个API可修复链接器错误 . 我确保除了添加两个OCIObjectGetAttr和OCIObjectSetAttr API调用之外,项目中的任何内容都没有改变 . 其他OCIObject * API正在链接 . dumpbin / exports oci.lib显示OCIObjectGetAttr和OCIObjectSetAttr是从oci.lib导出的 .

我错过了什么?

坚持了很长一段时间 . 谷歌/社区搜索也没有帮助 .

请帮忙 .

TIA

注意:Also posted in OTNhttps://community.oracle.com/message/12457198#12457198)请在绝望中原谅重复发布

1 回答

  • 1

    似乎是orid.h中的一个错误,以下让我走了 . 我试图从C链接,因为orid.h缺少标准的extern“C”块,用于从其他oci头文件链接到C .

    在以下内容中包含orid.h的内容让我成功编译 .

    #ifdef __cplusplus
    extern "C" {
    #endif
    ...
    #ifdef __cplusplus
    }
    #endif /* __cplusplus */
    

    希望Oracle在下一个即时客户端版本中修复它:) .

    感谢Ceannddevienne帮助我缩小范围 .

相关问题