加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

将DLL C类库移植到Visual Studio的问题

发布时间:2020-12-14 02:25:45 所属栏目:Windows 来源:网络整理
导读:我在C中编写了一个类库,并在 Linux中使用g作为共享对象成功编译了它,然后创建了一些使用它的应用程序.现在我必须将它移植到VS2008.我给了所有类所需的__declspec(dllexport)前缀,然后尝试编译它.我得到一堆警告,基本上与以下有关: 我的自定义异常类,派生自s
我在C中编写了一个类库,并在 Linux中使用g作为共享对象成功编译了它,然后创建了一些使用它的应用程序.现在我必须将它移植到VS2008.我给了所有类所需的__declspec(dllexport)前缀,然后尝试编译它.我得到一堆警告,基本上与以下有关:

>我的自定义异常类,派生自std :: runtime_error,它产生:
“警告C4275:非dll接口类’std :: runtime_error’用作dll接口类’cci :: FileOperationException’”的基础.我怎么能让标准库类dll-exportable?
>成员函数声明中的异常规范,导致“警告C4290:忽略C异常规范,但指示函数不是__declspec(nothrow)”.我读到某个地方,VS不支持这些,并且它确实在其他地方.多么令人困惑.

我读到人们说在DLL中导出类通常是一个坏主意,有无数的东西可能出错,现在我的头脑中充满了二进制不兼容,dll地狱,编译器版本不匹配等概念,以及说实话,我不能真正做出正面或反面.那么在Windows中创建共享类库的正确,安全和简便的方法是什么?

谢谢.

解决方法

我维护 a C++ class library通常在Windows上用作DLL,因此可以完成.关于你的问题:

>这不会发生在我的图书馆.也许您需要使用/ MD和/ MDd构建选项?这样你的C运行时库也来自DLL,这是VC着名的那种挑剔的东西.
>不要使用throw-specs. They are evil.如果你觉得你必须这样做,只需将这样的东西放在每个模块包含的头文件中,然后才能获得使用throw-specs的代码.

#pragma warning(disable: 4290)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读