duaiziwodexiuluo
2021-02-05 00:34
采纳率: 100%
浏览 231

MFC平台能使用xlnt库吗?

最近在看xlnt库,我在控制平台使用有效,但是早MFC中就会报错,很多类名未定义,编译不过,请问有解决方法吗?

你好,是MFC DLL平台,依赖项目录都有添加,但是提示如下图,找不到对应成员;编译出错见附图;

补充代码(无需积分下载):https://download.csdn.net/download/duaiziwodexiuluo/15074387

百度云链接:https://pan.baidu.com/s/13Q2BT-cxgHjbWVo3D1zHCw     提取码:1111

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

13条回答 默认 最新

  • bosaidongmomo 2021-02-06 10:18
    已采纳

     

    楼上Visual Studio 可以用Cmake 再下一个Cmake编译工具......

     

    显而易见的。他在命令行程序中是好的

    后来发现 dll工程文件

    最后定位在

    这两行代码需要重写... 

    /// <summary>
    /// constexpr max
    /// </summary>
    template <typename NumberL, typename NumberR>
    constexpr typename std::common_type<NumberL, NumberR>::type (max)(NumberL lval, NumberR rval)
    {
        return (lval < rval) ? (lval) : (rval);
    }
    
    /// <summary>
    /// constexpr min
    /// </summary>
    template <typename NumberL, typename NumberR>
    constexpr typename std::common_type<NumberL, NumberR>::type(min)(NumberL lval, NumberR rval)
    {
        return (lval < rval) ? (lval) : (rval);
    }

    改完之后运行成功. 我会将建议提交给开源作者..

     

    结束了罪恶的一生...

    https://github.com/tfussell/xlnt/issues/545

    2 打赏 评论
  • 歇歇 2021-02-05 00:38

    完全无问题

    打赏 评论
  • 歇歇 2021-02-05 00:38

    有问题发出来

    打赏 评论
  • 歇歇 2021-02-05 00:45

    报什么错?

    打赏 评论
  • 歇歇 2021-02-05 00:48

    链接器--》输入--》附加依赖项,加入:$(SolutionDir)lib\xlntd.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

    打赏 评论
  • 歇歇 2021-02-05 00:48

    右击属性--》配置属性--》VC++目录--》包含目录

    打赏 评论
  • 歇歇 2021-02-05 00:49

    #include "stdafx.h" #include #include

    打赏 评论
  • bosaidongmomo 2021-02-05 10:54

    我吐了 你扔github数据仓库里 我也能看看

    大概率是没环境搞对

    打赏 评论
  • 歇歇 2021-02-05 13:21

    没有百度云

    打赏 评论
  • 歇歇 2021-02-05 23:13

    需要下载码

    打赏 评论
  • 歇歇 2021-02-05 23:16

    msdn需要提取码

    打赏 评论
  • 歇歇 2021-02-05 23:21

    1.1 xlnt的获取

    这里采用从库里下载xlnt的方式,首先,参考“Windows10下安装Git” 先在windows 10 下安装好Git,或者直接网页下载:https://github.com/tfussell/xlnt

      2.2 CMake的安装

    到 cmake官网,根据自己的Windows 平台下载相应的版本(32位和64位),具体安装步骤可以参考

    3. xlnt库的编译

    1). 下载好后解压到自己的工程目录,这里以“E:\MyProject2019“为例,解压后的文件默认在”xlnt-master”文件夹,在该文件夹下创建build用于存放编译生成的库文件(也可以根据自己的使用习惯存放到其它地方),cd xlnt-master; md build

    2)选择源码所在的目录和目标输出目录后,点击Configure,在弹出的对话框中选择编译环境,此处自动识别为系统安装的Visual Studio 16 2019,也可根据实际情况选择其他环境。在目标平台中要注意默认的是x64,这里我需要的是编写好程序后拷到U盘在其他的电脑上运行,而目标平台有32位和64位的,且不确定,因此,为了兼容性,这里不采用默认平台,而是选择通用性更强的Win32.

    3) 点击Finish后,结果如下,同上述原因,由于运行的最终程序目标环境未知,因此这里选择静态连接。(如果同时取消TESTS发现编译速度加快很多),xlnt项目调试阶段,由于采用的是动态链接,因此这里也要取消“STATIC_CRT", 否则程序运行出错。

    4)点击“Generate” 后如下结果:

    5) 点击"Open Project" 自动调用Visual Studio 2019 打开相应的工程。由于项目需要经常在Debug和Release之间切换,为了减少对xlnt应用项目配置的变化,此处对xlnt输出的库文件做个变动,即都输出到Library,默认是Debug和Release输出到同名的目录。此处可以选择xlnt 项目,然后右键选择属性,其他的可以用默认。

    上述修改只是改变了DLL的默认输出路径,lib的默认输出路径没有改变,

    a.   dll 输出目录设置

    工程点击右键–>配置属性–>常规–>输出目录

    b.lib文件输出设置

    工程点击右键–>配置属性–>连接器–>高级->导入库

    引入lib

    在Visual Studio 2019 中选择Build->Build ALL_BUILD编译生成库文件,等项目生成完成

     

    打赏 评论
  • 歇歇 2021-02-05 23:21

    4. VC++ 使用xlnt读写Excel 

    至此,在 xlnt-master\build\source\Library中生成了库文件,xlntd.dll  xlntd.lib(如果是Release版本,则在 对应的Release文件夹,这里是假设已按前述步骤改了默认输出位置和名称),这两个文件是在后面的项目中要用到的文件,以及头文件,在xlnt-master\include中。

      4.1 Visual Studio 2019 项目中引入xlnt库

    1)配置头文件路径:在项目中右键选择属性,然后在“Configuration Properties-->VC++ Directories->Include Directories”中添加xlnt 头文件所在的位置,如下图所示:

    2) 配置第三方库路径:以同样的方式修改Library Directories添加“E:\MyProject2019\xlnt-master\build\source\Library”

     3) 库的引用配置:类似上述操作, Configuration Properties-->Linker-->Input-->Additional Dependencies, 填入xlnt.lib(注意,此处默认也是生成不同的文件名,Debug模式生成的文件是xlntd.lib, Release模式生成的是xlnt.lib,为了配置的简单,这里在前面生成xlnt时做了改变,统一生成xlnt.lib)。

    至此,Visual Studio 2019 通过xlnt访问excel 的环境就配置好了,接下来参考xlnt相关文档就可以写代码了。需要强调的是,如果是静态链接xlnt库,则需要预处理定义:XLNT_STATIC=1,如果项目开启了预编译的话,则可在 stdafx.h 中 加入” #define XLNT_STATIC 1“,或者在项目属性-> c/c++->命令行 添加: /D "XLNT_STATIC=1"

    打赏 评论

相关推荐 更多相似问题