C_and_CPP 板


LINE

※ 引述《paulri8924 (ㄤㄤㄤ)》之铭言: : 开发平台(Platform): (Ex: Win10, Linux, ...) Win 10 : 编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出) GCC : 额外使用到的函数库(Library Used): (Ex: OpenGL, ...) MSXML4.dll : 问题(Question): 使用Code::Blocks整合开发环境下,我上网找了一个可以透过line notify传讯息的程式 : 码,然後安装了msxml4,再将dll档跟程式码档放在同一个资料夹,但编译时出错,不知 : 道错在哪里,小弟是新手,还请前辈解惑,谢谢! : 喂入的资料(Input): 略 : 预期的正确结果(Expected Output): 能正确执行 : 错误结果(Wrong Output): 见影片档 : 程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档) 见影片档 : 补充说明(Supplement): : 影片档网址:https://www.youtube.com/watch?v=jaJZ_ph-Ub8
: → Lipraxde: 有中文字元的关系 04/13 23:00 : → paulri8924: 我刚刚将路径改成全英文後还是不行耶@@ 状况跟原本 04/13 23:09 : → paulri8924: 一样 04/13 23:09 : → paulri8924: https://imgur.com/rY18hPF 04/13 23:13 : → Lipraxde: 程式码里也有出现中文字元 04/14 00:44 : → Lipraxde: 一定要输出中文的话,档案编码、编译选项要处理好 04/14 00:45 : 推 LPH66: 不对不对不对, 你哪里学来 #import 的?! 04/14 02:21 : → LPH66: C++ 并没有 #import 这种语法, 引入 dll 也不是这样引入 04/14 02:22 : → LPH66: > Lipraxde 你可能被编译讯息 stray xxx in program 搞混了 04/14 02:22 : → LPH66: 这里原 PO 用的 #import 似乎被解释成 #include 了 04/14 02:23 : → LPH66: 所以该 dll 的二进位内容被贴入原始档内编译造成这讯息 04/14 02:24 (因为查到了其他东西所以回文) 先提结论: 这个问题是误用编译器 extension 造成的问题 问题就是出在 #import 这东西上 C++ 标准没有 #import 这东西, 不过因为这是 # 开头的指示词 只要编译器读得懂 # 後面的东西就可以做相应的操作 但因为这不是标准, 各家编译器可以解释成完全不一样的东西: https://stackoverflow.com/a/172264 * 在 MSVC 当中, #import 是用来引入一个 COM 介面 根据 MSDN↓, 它似乎真的能引入 .dll, 不过可能需要一些条件 https://docs.microsoft.com/zh-tw/cpp/preprocessor/hash-import-directive-cpp * 在 gcc/g++ 当中, #import 是个已被弃用 (deprecated) 的延伸功能 用来做为只引入一次的 #include 使用 那麽原 PO 这里的状况就是: 原 PO 查到了用 MSVC 的 #import 引入这个 .dll 的方式 但却使用在底层是 g++ 的 Code::Blocks 上 就造成了这个非标准指示词完全不同的解释出现问题 ==== 这种非标准指示词的问题其实 C/C++ 标准里是已经有解决方案的: C/C++ 标准有一个指示词叫 #pragma 专门用来表示这种指示词 #pragma 後面可以附上一些 token 来表示我想要编译器做什麽 标准里并没有定义 #pragma 要做什麽事, 全部都由编译器决定 这样的好处是: 一来因为都以 #pragma 开头, 编译器碰到看不懂的可以忽略它 二来人在看程式码时可以明确地知道这是一个只在这个编译器有用的指示词 就不容易发生这种 #import 各家用途不同造成的问题了 (所以是的, 大家很熟悉的 #pragma once 和 #pramga pack 其实都是 de-facto standard, 标准没有这麽定只是大家都这麽支援而已) ==== 也是题外话, 我会说 Lipraxde 可能被 stray xxx in program 错误讯息搞混的原因是 这是当程式码里有中文没有被引号括住也不在注解里面时会出现的错误讯息 因为这些地方应该是要写 C/C++ 语言指令的, 但却发现了不是英文的位元组 所以吐出这个讯息说这里有编译器看不懂的位元组 而在原 PO 这里, 编译器确实看到了看不懂的位元组了 但这却是因为 #import 解释为 #include 造成 .dll 的二进位内容贴上至原始码的关系 和原 PO 程式码里的中文完全没有关系 ==== 那麽回到原 PO 接下来可能会有的问题 这其实代表你找到的 msxml4 不能直接这样引入 gcc/g++ 编译 那你接下来的选择有几个: 1. 改用 Visual Studio 编译 既然这是 MSVC 才能用的语法, 就用 MSVC 来编就好 不过换 IDE 有很多眉角要照顾, 看你要不要花这个工夫了 2. 改找其他支援函式库 看起来似乎是你找到的程式码使用了 msxml4 你可以询问写出这些程式码的人如果要在 Code::Blocks 上编译要怎麽办 是不是有什麽其他替代函式库能使用 (对, 不是你找, 因为程式码不是你写的你也不知道怎麽改) 3. 改找其他能解决你的问题的解法 我其实会倾向你选择这个选项 因为如上一条所说, 大机率是你找到的程式码需要 msxml4 才能执行 那在没有其他编译器读得懂的附加档案 (例如 .dll 附带的 .h) 时 基本上要花很大功夫才能把这种函式库拿去给其他编译器用 这样一来, 你去找别的能够在不同编译器上编译的做法还会比较简单一点 -- LPH [acronym] = Let Program Heal us -- New Uncyclopedian Dictionary, Minmei Publishing Co. --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.177.0.237 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1618339960.A.0F0.html ※ 编辑: LPH66 (180.177.0.237 台湾), 04/14/2021 03:11:04
1F:推 Lipraxde: 没注意到 import Orz 04/14 07:05
2F:推 paulri8924: 原来如此,那我改用MSVC好了,感谢解惑! 04/14 07:55
3F:推 paulri8924: 也感谢Lipraxde大 04/14 08:09
4F:推 DLHZ: 推详细 04/27 11:09







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP