none
InterlockedIncrement包含在VisualStudio2013中的哪个库里面? RRS feed

  • 问题

  • 最近使用Apache的Log4cxx,想要转移到Visual Studio 2013的平台上进行开发。

    但是编译时最后与Log4cxx依赖的apr.lib进行链接时遇到一个问题:

    apr-1.lib(apr_atomic.obj) : error LNK2019: unresolved external symbol __InterlockedIncrement referenced in function _apr_atomic_inc32@4

    但是在Visual Studio 2012及Visual Studio 2010等平台上都没有问题,查看了一下,编译时依赖的lib文件都相同,有以下几个:

    ADVAPI32.LIB, WS2_32.LIB, MSWSOCK.LIB, SHELL32.LIB, ODBC32.LIB, kernel32.lib, user32.lib, gdi32.lib, winspool.lib, comdlg32.lib, advapi32.lib, shell32.lib, ole32.lib, oleaut32.lib, uuid.lib, odbc32.lib, odbccp32.lib

    查阅相关资料,InterlockedIncrement应该包含在kernel32.lib中,但是在Visual Studio 2013下不存在。

    请问Visual Studio 2013下,相关函数究竟包含在哪个lib里面?



    • 已编辑 CharCoal324 2014年6月10日 10:55 Apache拼写错误
    2014年6月10日 10:47

答案

  • 你好,

    请问你是在win32(X86)平台下编译的还是X64 平台下编译的?对于VS2013我遇到过X64 平台下没问题,但是X86平台下有问题的情况。如果你的问题是X86平台下发现的,你可以试试X64是否没有问题。对于这种情况,你可以参考这个讨论:其中讲到了关于InterlockedIncrement的定义与平台的相关性。

    https://groups.google.com/forum/#!topic/aprdev/bc1ILvUe-fk

    另外,确保你依赖的lib 文件是在相应的平台路径下搜索的。你可以试着配置lib 的全路径,如果是x64平台下的,确保lib 是x64路径下的文件,同理,如果是x86的,确保lib是x86路径下的。

    May


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年6月11日 7:57

全部回复

  • 你好,

    请问你是在win32(X86)平台下编译的还是X64 平台下编译的?对于VS2013我遇到过X64 平台下没问题,但是X86平台下有问题的情况。如果你的问题是X86平台下发现的,你可以试试X64是否没有问题。对于这种情况,你可以参考这个讨论:其中讲到了关于InterlockedIncrement的定义与平台的相关性。

    https://groups.google.com/forum/#!topic/aprdev/bc1ILvUe-fk

    另外,确保你依赖的lib 文件是在相应的平台路径下搜索的。你可以试着配置lib 的全路径,如果是x64平台下的,确保lib 是x64路径下的文件,同理,如果是x86的,确保lib是x86路径下的。

    May


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年6月11日 7:57
  • 多谢,切换到x64确实是OK了。win32编译不通过,x64可以通过。

    提供的网址在China区域无法访问,很伤心啊,各种代理都访问不了google,程序员的地狱。

    x64可以编过,但是如果整个平台都切换到x64平台上,可能又要付出一定代价。

    总之,非常感谢您的解答!

    2014年6月13日 1:15
  • 同样遇到这个问题,X86平台下怎么解决呢,你有方案吗
    2019年5月31日 10:03