dongquexi1990 2009-12-24 09:24
浏览 77

在Windows上编译我自己的PHP扩展,但得到了LNK 2005错误

I am using VC 2008 express, and tried to compile my own PHP extension with that. Any idea about the following error?

------ Rebuild All started: Project: xsplit, Configuration: Debug Win32 ------
Deleting intermediate and output files for project 'xsplit', configuration 'Debug|Win32'
Compiling...
xsplit.cpp
c:\x\php-5.3.1\zend\zend_execute.h(231) : warning C4018: '>' : signed/unsigned mismatch
.\xsplit.cpp(64) : warning C4091: 'typedef ' : ignored on left of '_dict' when no variable is declared
.\xsplit.cpp(154) : warning C4101: 'file_size' : unreferenced local variable
.\xsplit.cpp(153) : warning C4101: 'fd' : unreferenced local variable
.\xsplit.cpp(417) : warning C4244: '=' : conversion from 'Darts::DoubleArrayBase<ValueType>::size_type' to 'float', possible loss of data
        with
        [
            ValueType=int
        ]
.\xsplit.cpp(418) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
.\xsplit.cpp(426) : warning C4244: '=' : conversion from 'size_t' to 'float', possible loss of data
.\xsplit.cpp(436) : warning C4244: '=' : conversion from 'Darts::DoubleArrayBase<ValueType>::size_type' to 'float', possible loss of data
        with
        [
            ValueType=int
        ]
.\xsplit.cpp(437) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
.\xsplit.cpp(445) : warning C4244: '=' : conversion from 'size_t' to 'float', possible loss of data
.\xsplit.cpp(455) : warning C4244: '=' : conversion from 'Darts::DoubleArrayBase<ValueType>::size_type' to 'float', possible loss of data
        with
        [
            ValueType=int
        ]
.\xsplit.cpp(456) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
.\xsplit.cpp(464) : warning C4244: '=' : conversion from 'size_t' to 'float', possible loss of data
.\xsplit.cpp(800) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
        C:\Program Files\Microsoft Visual Studio 9.0\VC\include\string.h(74) : see declaration of 'strcpy'
.\xsplit.cpp(932) : warning C4101: 'hashval' : unreferenced local variable
.\xsplit.cpp(931) : warning C4101: 'arrht' : unreferenced local variable
Compiling manifest to resources...
Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
Copyright (C) Microsoft Corporation.  All rights reserved.
Linking...
Searching libraries
    Searching C:\x\php-5.3.1\bindlib_w32\php5ts.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\kernel32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\user32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\gdi32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\winspool.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\comdlg32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\advapi32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\shell32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\ole32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\oleaut32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\uuid.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbc32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbccp32.lib:
    Searching C:\x\php-5.3.1\bindlib_w32\libcpmtd.lib:
libcpmtd.lib(cerr.obj) : error LNK2005: "bool __cdecl std::_Fputc<char>(char,struct _iobuf *)" (??$_Fputc@D@std@@YA_NDPAU_iobuf@@@Z) already defined in xsplit.obj
libcpmtd.lib(cerr.obj) : error LNK2005: "bool __cdecl std::_Ungetc<char>(char const &,struct _iobuf *)" (??$_Ungetc@D@std@@YA_NABDPAU_iobuf@@@Z) already defined in xsplit.obj
libcpmtd.lib(cerr.obj) : error LNK2005: "bool __cdecl std::_Fgetc<char>(char &,struct _iobuf *)" (??$_Fgetc@D@std@@YA_NAADPAU_iobuf@@@Z) already defined in xsplit.obj
libcpmtd.lib(cerr.obj) : error LNK2005: "public: void __thiscall std::_Container_base_secure::_Orphan_all(void)const " (?_Orphan_all@_Container_base_secure@std@@QBEXXZ) already defined in xsplit.obj
libcpmtd.lib(string.obj) : error LNK2005: "public: void __thiscall std::_Container_base_secure::_Orphan_all(void)const " (?_Orphan_all@_Container_base_secure@std@@QBEXXZ) already defined in xsplit.obj
libcpmtd.lib(locale0.obj) : error LNK2005: "void * __cdecl operator new(unsigned int,void *)" (??2@YAPAXIPAX@Z) already defined in xsplit.obj
libcpmtd.lib(locale0.obj) : error LNK2005: "void __cdecl operator delete(void *,void *)" (??3@YAXPAX0@Z) already defined in xsplit.obj
libcpmtd.lib(locale0.obj) : error LNK2005: "public: void __thiscall std::_Container_base_secure::_Orphan_all(void)const " (?_Orphan_all@_Container_base_secure@std@@QBEXXZ) already defined in xsplit.obj
    Searching C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\LIBCMTD.lib:
    Searching C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\OLDNAMES.lib:
    Searching C:\x\php-5.3.1\bindlib_w32\php5ts.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\kernel32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\user32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\gdi32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\winspool.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\comdlg32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\advapi32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\shell32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\ole32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\oleaut32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\uuid.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbc32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbccp32.lib:
    Searching C:\x\php-5.3.1\bindlib_w32\libcpmtd.lib:
Finished searching libraries
Searching libraries
    Searching C:\x\php-5.3.1\bindlib_w32\php5ts.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\kernel32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\user32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\gdi32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\winspool.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\comdlg32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\advapi32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\shell32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\ole32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\oleaut32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\uuid.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbc32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbccp32.lib:
    Searching C:\x\php-5.3.1\bindlib_w32\libcpmtd.lib:
    Searching C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\LIBCMTD.lib:
    Searching C:\Program Files\Microsoft Visual Studio 9.0\VC\lib\OLDNAMES.lib:
    Searching C:\x\php-5.3.1\bindlib_w32\php5ts.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\kernel32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\user32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\gdi32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\winspool.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\comdlg32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\advapi32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\shell32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\ole32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\oleaut32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\uuid.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbc32.lib:
    Searching C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbccp32.lib:
    Searching C:\x\php-5.3.1\bindlib_w32\libcpmtd.lib:
Finished searching libraries
c:\xproject\xsplit\Debug\xsplit.dll : fatal error LNK1169: one or more multiply defined symbols found
Build log was saved at "file://c:\xproject\xsplit\xsplit\Debug\BuildLog.htm"
xsplit - 9 error(s), 16 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
  • 写回答

1条回答 默认 最新

  • doujinyi1267 2009-12-24 09:45
    关注

    Where did you get this libcpmtd.lib from?

    • Was it compiled with the same /Mx settings as your .dll project?
    • Did you use function level linking in one or both projects?
    评论

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥15 如何修改pca中的feature函数
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况