在Visual Studio 2013上遇到,但它可以与任何版本重现.
我从github克隆了协议缓冲库,在它上面运行了CMake-gui(我将所有内容都保留为默认值,因此它是静态版本),只构建libprotobuf(其他项目由于某种原因失败,cmd.exe错误,可能有事情要做有测试,但libprotobuf构建良好).
我的项目使用在mapbox矢量tile规范的github上找到的.proto文件生成的标题.
当我链接时,我首先有这个错误
Error 1 error C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators' s:\program files (x86)\microsoft visual studio 12.0\vc\include\xutility
我尝试-D_SCL_SECURE_NO_WARNINGS在其他命令行参数中禁用它,但后来我有其他错误:
Error 1 error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in main.obj S:\eiogit3\misc-projs\mapload\mapload\libprotobufd.lib(common.obj)
c++ protocol-buffers visual-studio visual-c++ visual-studio-2013
我是 C++ 语言的新手。当我开始构建一个新项目时,我可以看到两个选项。C++ 可执行文件和 C++ 库。
我尝试在很多地方寻找它们的差异,但什么也没得到。有人可以指导我找到关于这个主题的正确答案吗?
谢谢
这个答案指出:
无法链接mysql5.1.39\bin\libmySQL.dll
但我不明白为什么,.dll基本上是相同的,.lib除了它只有一个副本由不同的进程使用.
它与IDE有什么关系吗?我使用的是visual c ++ 2008 express
UPDATE
有人知道在Windows中转换.dll成免费工具.lib吗?
我是C编程的新手.我对.so文件一无所知.有什么需要呢?我怎么创建它?如何绑定我的C代码或二进制文件?如果我不制作任何.so文件并直接生成C代码的可执行二进制文件,它的PROS和CONS是什么?需要详细描述它.
我正在尝试将 C++ 库包装到托管项目可以使用它。我使用的第三方库是共享库。它的目的是在加载时链接。我有头文件、.lib 文件(DLL 导入库)和 .DLL 文件。
这是我到目前为止所做的:- 1. 创建 CLR 项目。2. 在C/C++->常规->附加包含目录中添加头文件路径。 3. 在链接器->常规中设置“附加库目录”。4.在Linker->Input->Additional Dependency中添加lib名称
执行此操作后,我收到 LNK2005 链接错误,然后收到 LNK1169。创建项目后我做的唯一一件事就是包含我试图包装的 C++ 库中的头文件。我究竟做错了什么?
错误 LNK2005:“public:virtual char const * __cdecl std::exception::what(void)const ” (?what@exception@std@@UEBAPEBDXZ) 已在...中定义 致命错误 LNK1169:一个或多个多重定义的符号成立