万码JFG3236P
小程序在IOS中引入第三方网站,效果不展示?
windows系统跟ios系统的时间戳格式不一样 导致
ios系统下 通过时间戳判断的方法 没有进入到方法体 所以才会出现功能失效
万码JFG3236P
【求助】IOS 升级Xcode14后,构建失败:Multiple commands produce?
感谢Stephanie老哥,我贴一下答案吧。
最后发现是由于podfile中多个target都有
pod 'LBFoundation', :path => './Specs/foundation'
例如我有个主工程 project1, 同时有两个target 'NotificationService'和'project1WidgetExtension'。主工程依赖这两个target。
cocoapods在install LBFoundation时会生成两个target, 'LBFoundation.common'和'LBFoundation.common-Service'.
这可能是由于依赖的两个工程里只引用了LBFoundation中的某个部分,比如LBFoundation/Service有关。
所以install的时候会生成两个不一样的target, 然后archive时两个target又都会生成LBFoundation.framework导致冲突(这个不清楚内部逻辑,感觉是这样)
解决方案是再单独pod一下LBFoundation/Service,最终podfile如下(隐藏了无关信息):
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, "12.0"
inhibit_all_warnings!
def private_develop_share_pods
# 省略
pod 'LBFoundation', :path => './Specs/foundation'
pod 'LBFoundation/Service', :path => './Specs/foundation'
# 省略
end
target 'project1' do
project 'project1.xcodeproj'
use_frameworks!
private_develop_share_pods
# 省略
end
target 'NotificationService' do
project 'project1.xcodeproj'
use_frameworks!
private_develop_share_pods
# 省略
end
target 'project1WidgetExtension' do
project 'project1.xcodeproj'
use_frameworks!
private_develop_share_pods
# 省略
end
省略
这个模块具体看你库里用的什么模块,我看github上也有老哥是这样解决的。
然后再pod install,就可以看到pods下只剩下一个LBFoundation的target了。此时archive就不会报Multiple commands produce的错误了
万码JFG3236P
有没有大佬看一下这段js 在安卓qq正常运行 在苹果qq没有反应 能帮忙看看嘛?
用 vConsole 把日志打出来看看。
或者 try...catch 抓住 error 再 alert(JSON.stringify(error)) 。
当然还可以看下 QQ 官方的文档。
万码JFG3236P
IAP 使用flutter_inapp_purchase 刷新商品列表报错?
xcode清理下,mac重启下,挂上VPN切到和沙盒账号同地区,搞定
万码JFG3236P
uniapp开发app,怎么做一个自定义可拖拽、缩放、编辑、删除的海报?
两步:
1.用 webview 以获取与浏览器一致的 JS 运行环境;
2.然后在 webview 里面使用 Fabric.js 做编辑器。
Fabric.js 的官方网站:http://fabricjs.com 。
webview 的方案适用于大部分 Native 环境不支持的技术,不过如果限制不让使用 webview 的话就不行了。
万码JFG3236P
iOS开发,多个电脑如何同步配置证书?
1.用Apple Developer账户的共享访问,一个共享的Apple Developer账户,可以在所有的开发机器上用这个账户。这样在一个机器上更新了证书或配置文件,其他的机器可以通过Xcode的自动管理证书功能来获取更新。
2.fastlane管理工具
万码JFG3236P
怎么定位网络中断问题?
网络中断问题在iOS端的APP中可能由多个因素引起。在排查问题时,可以考虑以下几个方面的思路:
网络稳定性:首先,确保移动设备的网络连接稳定。可以在不同的网络环境下测试APP,例如使用Wi-Fi和移动数据网络,看是否在某一特定网络下频繁出现网络中断问题。
AFNetworking配置:检查使用的AFNetworking组件的配置是否正确,例如请求超时时间、最大并发数等参数。确保这些配置适合你的APP的需求和后端服务器的性能。
日志记录:在APP中添加详细的日志记录功能,包括网络请求的发起、响应和错误信息等。将日志记录保存到文件或通过其他方式发送到服务器,以便后续分析。
后端性能:确认后端服务器的性能是否足够满足APP的请求。可以监控后端服务器的资源使用情况,包括CPU、内存、网络等指标,查看是否有明显的性能瓶颈。
前端优化:检查APP中的网络请求频率和数据量是否合理。减少不必要的请求和数据传输,优化数据加载的方式,可以降低网络中断的风险。
错误处理:在APP中对网络请求进行合适的错误处理。例如,网络请求失败时给予用户友好的提示,或者尝试进行自动重连。
使用Charles或Wireshark等网络抓包工具:通过网络抓包工具监视APP与服务器之间的网络通信,查看请求和响应的细节,从而找到请求中断的原因。
PHP-FPM慢日志:再次检查PHP-FPM的慢日志,确保没有遗漏问题。如果慢日志中没有明显的问题,可以尝试调整PHP-FPM的配置参数,如进程数、内存限制等,以提升性能。
Nginx配置:确认Nginx的配置是否合理,特别是与PHP-FPM连接和响应相关的配置。可以逐步调整Nginx的参数,观察是否有改善。
健康检查:在APP中添加健康检查功能,定期检查服务器的可用性和响应时间,以及网络连接的稳定性。
综合考虑以上因素,一步步排查问题,最终找到可能导致网络中断的原因,并采取相应的解决措施。如果问题仍然无法解决,可能需要进一步调查和分析,甚至考虑咨询专业的iOS和后端开发人员
万码JFG3236P
uniapp ios uview的u-popup遮罩层下的scrollView也能滚动?
我今天也遇到了这个问题,已经解决了,你可以试一试。
在上添加 @touchmove.stop.prevent,然后需要滚动的部分使用uni的scroll-view组件设置scroll-y="true"
万码JFG3236P
有比较推荐的Android 与 iOS 投屏软件SDK推荐吗?
CarPlay (for iOS)支持苹果手机
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724825672629_B90n.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724825672629_B90n.png)
MirrorLink 支持Android, iOS 和VNC Automotive SDK by RealVNC 也支持:Android, iOS
万码JFG3236P
可以直接进行安装使用iOS打包文件吗?与从iOS应用市场下载的应用对比会有什么不好吗?
可以直接安装,用Ad Hoc分发或者用企业证书分发可以直接安装,但是基本是用来内测的,有安全问题吧,没经过审核,安装上也复杂,Ad Hoc分发有设备数量限制,企业分发的话要企业开发者账号,用TestFlight进行Beta测试分发,或者找合法的B2B分发渠道。技术上虽然可以绕过,但还是建议审核过好一些。目前没有操作系统硬件都是人家的,不过听欧盟说要让苹果搞第三方应用市场可以下载,不知道能实现不。
万码JFG3236P
iOS的库没有搜索到如何加入搜索路劲呢?
你把报红的库删除;然后重新添加进来,应该就可以了
万码JFG3236P
don’t have access,提示没权限或同意协议?
上面写的很清晰了,应该是苹果更新了一些有关程序开发的条款你需要同意一下,登入开发中账号看一下😂;
万码JFG3236P
是否有macOS/iOS签名分发的比较详细的教程呢?
1不是必须,但是如果你想在官方渠道上分发,就必须签名。而且即便不上架应用市场,也建议签名,因为操作系统对于未经签名的应用运行起来有很多限制。
2所有数字签名的作用都是一样的 —— 为了保证信息没有被篡改,无论你签名的是应用程序、还是域名证书、还是数据报文、还是什么别的东西。你运行的程序,跟商店里的那个签名对不上,就说明程序已经是被篡改过的,比如可能被植入了恶意代码。当然你要说你本来程序里就有恶意代码,签名了不也一样不安全吗。那确实,因为签名不是为了保证这方面安全的,它只能保证不被第三者去篡改,保证不了开发者自己“投毒”。
3基本一致。
4不是。签名是签名,公证是公证。前面两点说了,签名是为了保证程序内容不被篡改,你不上架应用市场也可以自己签名,但用户就得自己想办法55去校验签名了。而公证是提交给官方,官方会记录你的签名,然后还会有一些机审。
可以。
6看 Apple 官方文档,其实流程是很明确。
万码JFG3236P
app是怎么主动发送通知给手机的 就算你没有启动这个app?
主要分为两个主流平台 Android,IOS 这两家其实都提供了 push 的功能,也就是开发者能通过调用系统的api,系统接收推送消息。
Android 上有 GCM (Google Cloud Messaging)
iOS 上有 APNs(Apple Push Notification service)
所以其实应用并不需要启动就能收到消息,因为处理通知消息的是系统,但是 Android 的GCM是依赖于 Google 服务,因为大家都知道的原因,安卓的GCM基本是处于不可用的状态,各大平台厂商开始了骚操作。
国内各大平台陆续推出了GCM的替代品但是基本都是各自为战,
有系统级的推送服务比如小米,华为,OPPO,他们都做了推送系统服务,你应用接入相关sdk,就能使用系统的推送服务,也可以实现应用没启动来收到消息,但是你需要接入各个系统的sdk,而且不一定每个系统都会做推送服务,毕竟国内的安卓百花争艳。
也有应用级的系统服务,比如说腾讯做了推送服务,在以前一个平台的app可以做到相互拉起,唤醒,保活 只要有一个腾讯系的产品在,就能收到消息。
推送服务商是绝大部分 APP 都会优先考虑采用方案,目前应用最为广泛的第三方推送服务提供商包括个推、极光、友盟、小米、华为、BAT 等。有这些服务商,开发者也就不需要整合这么sdk,直接有服务商整合完成,开发者只需要调用一个接口就行了。
万码JFG3236P
iPhone 14 Pro无法访问本地RN服务,但Xcode可以识别到iphone?
adb = Android Debug Bridge (adb)
adb 是给Android设备的调试工具
万码JFG3236P
2024年前端客户端主流开发技术栈有什么?
技术依赖于业务,客户端本身并不乐观,同时大厂以节约成本还是会考虑 electron、RN
万码JFG3236P
uniapp 苹果内购买订阅产品成功 再取消后为什么无法复购?
uni-app 中关于这部分是有解释的:
注意事项
相同订单,重复调用 restoreCompletedTransactions 后 transactionReceipt 会发生变化,并非唯一值
调用 finishTransaction 关闭订单可能不会立即生效,取决于苹果的服务器
沙盒环境:一个测试账号相同产品仅能购买一次,重复测试需要清除购买记录或重新添加沙盒测试账号
沙盒环境:调用 restoreCompletedTransactions 长时间无反应,检查设备登陆的沙箱账号是否正常
#注意事项 - uni.requestPayment(OBJECT) | uni-app官网
万码JFG3236P
APP上架AppStore软著是否必需?
不需要。
如果分类是游戏,且上架地区包含中国大陆,那么需要提供版号(申请版号的前提是有软著,但提交到 AppStore 时不需要提供软著证书)。
万码JFG3236P
Vue2.0移动端PDF预览问题:iOS设备文件内容多显示不全?
显示不全能不能看看截图
万码JFG3236P
iOS 14后H5页面Universal Links跳转App失效的原因是什么?
apple-app-site-association别放到oss类型这种储存器,解析有问题。
配置可以加个路径。然后访问https://xxxx/testApp即可
{
"applinks": {
"apps": [],
"details": [
{
"appID": "xxxxx",
"paths": ["/testApp/*"]
}
]
}
}
万码JFG3236P
iOS 支付宝 审核
Does your app access any paid content or services?
Yes/no (你来选)
Is the 服务套餐 service provided within the app?
No, this service provided by 3rd party provider (Chinese Alipay Company)
What are the paid content or services, and what are the costs?
要您告诉他你在app买什么,单价多少钱。 可以用RMB描述
Who pays for the content or services?
- App users pay for that (contents 或者 services) -- 这个看你的app的context。
Where do they pay, and what’s the payment method?
Payment is routed through Alipay (to our business account)
If users create an account to use your app, are there fees involved?
No. Even when they're paying authentication is done on the alipay platform.
How do users obtain an account?
legible users create account on Alipay website. This literally has no relationship with app account credentials.
For more information about Alipay payment system, please visit http://global.alipay.com/ospay/home.htm
我觉得你要一个个回答他们就会更清楚。
万码JFG3236P
iOS App 录音上传至服务器后,微软语音识别库无法识别WAV格式音频,如何解决?
对于您描述的问题,上传的 WAV 文件在微软语音识别库中无法识别,这通常是由于文件格式或编码不符合识别库的预期导致的。针对您提供的代码和描述,这里有几个可能的解决方案:
确保 WAV 文件格式正确:
WAV 文件格式包含了一个文件头,它描述了音频数据的格式。确保文件头包含了正确的信息,特别是 Format 块,它应该包含正确的 wFormatTag(通常为 1 表示 PCM),nChannels(通道数),nSamplesPerSec(采样率),nAvgBytesPerSec(平均字节速率),nBlockAlign(块对齐)以及 wBitsPerSample(每样本位数)。
检查采样率和通道数:
确保您设置的采样率和通道数符合微软语音识别库的要求。根据您提供的代码,您设置了采样率为 16000 Hz 和双声道(2 通道)。确保微软语音识别库支持这些设置。有时,语音识别库可能只支持特定的采样率(如 16000 Hz)和单声道。
使用正确的字节序:
对于 PCM 数据,还需要确保字节序(大端或小端)是正确的。这通常在 WAV 文件的 Format 块中的 wFormatTag 字段指定为 WAVE_FORMAT_PCM(值为 1)时自动处理。但是,如果使用了其他编码,就需要特别小心字节序。
转换格式或编码:
如果以上步骤都不能解决问题,您可能需要将音频数据转换为微软语音识别库支持的特定格式。这通常意味着您需要在上传之前对音频数据进行转码。您可以使用像 FFmpeg 这样的工具来转码音频文件。
检查上传过程:
确保在上传过程中音频文件没有被损坏或修改。您可以通过在上传前后比较文件的 MD5 哈希值来验证这一点。
联系微软支持:
如果问题依然存在,您可能需要联系微软语音识别库的技术支持,询问他们关于 WAV 文件格式的具体要求,并寻求进一步的帮助。
最后,请注意,在更改音频设置或进行转码时,您可能需要在本地和服务器上同时测试,以确保更改后的音频文件既能在本地正确识别,也能被微软语音识别库识别。
万码JFG3236P
iOS 从webview上present一个viewcontroller,然后再dismiss以后会触发哪个事件?
换个思路。
dismiss的时候通知webview所在的viewcontroller来执行一个js的function,来手动通知webview中的js执行某个方法。
NSString *jsCommand = [NSString stringWithString:@"alert('good luck')"];
[self.webView stringByEvaluatingJavaScriptFromString:jsCommand];
万码JFG3236P
UITableViewCell 如何获取自身高度
- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *identifier=@"indentifier";
UITableViewCell *cell =(UITableViewCell *)([self.tableView dequeueReusableCellWithIdentifier:identifier]);
return cell.frame.size.height;
}
你可以这样获取到 cell 的实例并返回高度。
也可以直接 return 150.0;指定高度。
万码JFG3236P
iOS Webview调用native code的解决方案
1.本地代码的view里可以内嵌一个webview,并且看不出来是webview;
2.很多问题可能导致界面卡顿,各种优化也要对症下药。这里提供一篇Linkedin的文章http://engineering.linkedin.com/linke...,可以参考一下。
万码JFG3236P
如何使用iOS里的附加的中文字体
就我所知,iOS只自带了几款中文字体。其他的中文字体,是被iOS的开发者自行打包进入的。
在info.plist文件中,添加“Fonts provided by application”配置项。 然后就可以使用[UIFont fontWithName:@"****" size:12.0f]这种方式使用
万码JFG3236P
iOS 键盘收起后页面不归位问题如何解决?
监听一下输入框的onblur事件,然后用window.scroll做一下处理
万码JFG3236P
iOS 手机上前端开发页面文本省略溢出问题如何解决?
可以用js计算总宽度,然后计算最多可以显示多少文字,做截断处理。
万码JFG3236P
通过Test over the air的方式下载测试iOS应用提示“无法下载”
进度条在刚开始就提示无法下载:manifest.plist的ipa url配置不正确、bundle identifier和ipa对不上。(和你描述的情况一致,部署没部署对)
进度条卡在下载完成开始安装时:ipa证书中不包含此设备的uuid,或者如你问题中所说的deployment target过高等。
建议使用久经考验的php-tot搭建OTA服务器,别费力自己部署了,容易出错
万码JFG3236P
对 nullptr 解引用会得到什么?
未定义行为。
程序可以出现任何行为,包括得到一个无意义的值、崩溃等等。崩溃应该是比较常见的结果。
万码JFG3236P
刚学C语言不久,为什么我使用char定义变量而且只存储一个值会报错?
刚学C语言不久,为什么我使用char定义变量而且只存储一个值会报错?这我也没有看出什么问题来啊。
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724819375547_abPy.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724819375547_abPy.png)
万码JFG3236P
C怎么实现键盘输入后右对齐输出?
while (form[n1++] = _getch())
{
if (form[n1 - 1] == '=')
break;
if (form[n1 - 1] == 'd' || form[n1 - 1] == 'D')
{
printf("\b \b\b \b");
n1 -= 2;
continue;
}
if (form[n1 - 1] == 'q' || form[n1 - 1] == 'Q')
exit(0);
printf("%c", form[n1 - 1]);
}
以上是我的源码,想要代码实现不回车就读取键盘输入
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724819161736_03fY.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724819161736_03fY.png)
万码JFG3236P
单片机报文调试:mac帧有没有类似于调试串口的软件。网上调试报文软件要么串口(物理层)调试要么TCP(传输层)调试,有没有介于中间MAC帧(链路层)的调试软件呢
系统:WIN10
这是wireshark抓包,我想PC模拟发出这一帧该如何实现?
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724819005285_X44E.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724819005285_X44E.png)
万码JFG3236P
C语言将两个升序链表合并为一个新的升序链表并返回,我的链表合并代码VS上可以运行,leetcode上为什么报错?
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
typedef struct Node{
int val;
struct Node *next;
}Node,* ListNode;
void printLinkList(ListNode L);
ListNode createTail(ListNode L);
//初始化一个链表
ListNode LinkListInit() {
Node* L;
L = (Node*)malloc(sizeof(Node)); //申请结点空间
if (L == NULL) { //判断是否有足够的内存空间
printf("申请内存空间失败\n");
}
L->next = NULL;//将next设置为NULL,初始长度为0的单链表
return L;
}
//输入一个升序链表
ListNode createTail(ListNode L) {
int x;
Node* s, * r = L;
printf("输入一个升序链表:\n");
scanf("%d", &x);
while (x != 9999) {
s = (Node*)malloc(sizeof(Node));
s->val = x;
r->next = s;
r = s;
scanf("%d", &x);
}
r->next = NULL;
return L;
}
//链表拼接
ListNode mergeTwoLists(ListNode L1, ListNode L2) {
ListNode r, s,P;
Node* m,*p;
P = LinkListInit();
p = P;
r = L1->next;
s = L2->next;
if (r == NULL) {
return L2;
}
else if(s == NULL){
return L1;
}
else if (s == NULL && r == NULL) {
return 0;
}
while (r != NULL && s != NULL) {
if (r->val val) {
p->next = r;
p = r;
r = r->next;
//p->next = NULL;
}
else {
p->next = s;
p = s;
s = s->next;
}
}
if (r != NULL) {
p->next = r;
p = r;
r = r->next;
}
if (s != NULL) {
p->next = s;
p = s;
s = s->next;
}
p->next = NULL;
return P;
}
//输出链表
void printLinkList(ListNode L)
{
ListNode p;
p = L->next;
if (p == NULL) {
printf(" ");
}
while (p)
{
printf("%d ", p->val);
p = p->next;
}
printf("\n");
}
int main(void) {
ListNode L1, L2,R,L;
L1 = LinkListInit();
L2 = LinkListInit();
L = LinkListInit();
R = LinkListInit();
createTail(L1);
createTail(L2);
R = mergeTwoLists(L1, L2);
printLinkList(R);
return 0;
}
我的链表合并以及排序的函数(mergeTwoLists)代码是哪里有问题吗,为什么我在VS上运行没报错,leetcode上运行就报错了
效果图片
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724818762704_Ot9U.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724818762704_Ot9U.png)
leetcode报错图片
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724818779853_Nae6.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724818779853_Nae6.png)
万码JFG3236P
CentOS7上面运行的项目,在用户管理添加新用户时,密码设置成Aa12345@,报错?
问题描述
CentOS7上面运行的项目,在用户管理添加新用户时,密码设置成Aa12345@时,会报Cannot read property 'message' of undefined的错误
问题出现的环境背景及自己尝试过哪些方法
在/etc/pam.d下的common-password文件中
password [success ok] pam_cracklib.so rejectusername minlen=8 difok=3 ucredit=0 lcredit=0 dcredit=0 ocredit=0
相关代码
相关代码如下:
inline int pamUpdatePassword(const std::string& username,
const std::string& password)
{
// NOLINTNEXTLINE(cppcoreguidelines-pro-type-const-cast)
const struct pam_conv localConversation = {pamFunctionConversation,const_cast(password.c_str())};
pam_handle_t* localAuthHandle = nullptr; // this gets set by pam_start
int retval = pam_start("webserver", username.c_str(), &localConversation, &localAuthHandle);
if (retval != PAM_SUCCESS)
{
return retval;
}
retval = pam_chauthtok(localAuthHandle, PAM_SILENT);
if (retval != PAM_SUCCESS)
{
pam_end(localAuthHandle, PAM_SUCCESS);
return retval;
}
return pam_end(localAuthHandle, PAM_SUCCESS);
}
你期待的结果是什么?实际看到的错误信息又是什么?
密码设置成Aa12345@时,pam_chauthtok()函数返回PAM_AUTHTOK_ERR,如果密码设置成Bji230309@时,返回PAM_SUCCESS(正常的),为什么将密码设置成Aa12345@不行,大家有遇到过嘛?
万码JFG3236P
c++ 类名前的 宏定义的 作用?
#define SVG_IMP_EXP
class SVG_IMP_EXP SVGDocument
这个代码中 SVG_IMP_EXP 作用是什么,看了些解释,还是不太懂,有没有大佬用通俗一点的语言告知下,还有些是加在 函数前的,又是什么作用?
万码JFG3236P
特征码的通配符??和*号在vs里面怎么不能用?
uint8_t pattern[] = { 0x73, 0x3A, 0x??, 0x??, 0x??, 0x??, 0x20 };
直接说是无效的十六进制数
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816971922_E9NT.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816971922_E9NT.png)
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816988563_9oqf.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816988563_9oqf.png)
万码JFG3236P
大佬们,数据经过socket传输之后,显示在客户端的汉字出现乱码如何解决?
问题描述
私聊模块,一个客户端发送完数据,另一个客户端在显示方面出现中文乱码。
问题出现的环境背景及自己尝试过哪些方法
尝试过在发送数据的时候使用toUtf8方法,没有效果
接受的时候使用fromUtf8,没有效果
相关代码
粘贴代码文本(请勿用截图)
//私聊功能
void Friend::chatAlone()
{
//获取自己的名字和好友的名字,获取消息的内容
QListWidgetItem* lw= friendList->currentItem();
//判断是否为空
if(lw==NULL)
{
QMessageBox::information(this,"私聊","请选择要私聊的好友");
return;
}
QString st;
st=lw->text().toUtf8();
QString strName=TcpClient2::getInstance().getName().toUtf8();
QString msg=inputMsg->text().toUtf8();
inputMsg->clear();
PDU* p=mkPDU(msg.size());
p->uiMsgType=ENUM_MSG_TYPE_CHAT_ALONE_REQUEST;
//将获取到的数据封装到自己定义的PDU里面
strncpy(p->caData,st.toStdString().c_str(),st.size());
strncpy(p->caData+32,strName.toStdString().c_str(),strName.size());
strncpy((char*)p->caMsg,msg.toStdString().c_str(),msg.size());
TcpClient2::getInstance().getSocket()->write((char*)p,p->uiPDULen);
free(p);
p=NULL;
showMsg->append("你对"+st+"说:"+msg);
}
显示消息
void Friend::showMs(PDU *p)
{
if(NULL==p)
return;
char name[32]={'\0'};
strncpy(name,p->caData+32,32);
QString msg=QString("%1对你说:%2").arg(name).arg((char*)p->caMsg);
showMsg->append(msg);
}
自己定义的PDU
struct PDU
{
uint uiPDULen;//总的消息长度
uint uiMsgType;//消息的类型
char caData[64];
uint uiMsgLen;//实际消息长度
int caMsg[];//实际消息
};
你期待的结果是什么?实际看到的错误信息又是什么?
期待结果:中文信息可以正常显示
错误显示:你对jack说:你好杰克
jack对你说:你��������z��
万码JFG3236P
结构体嵌套情况下,C语言void*类型赋值失败?
具体是这样的,我定义了两个个结构体:
typedef struct
{
void* input;
void* output;
} A;
typedef struct
{
char* data1;
int* data2;
} B;
在使用的时候做了如下操作
A* test;
test->input = (B*)(test->input);
test->output = (B*)(test->output);
test->input->data1 = "hello";
*(test->input->data2) = 1;
换了另一种写法也是报错
A* test;
B* tmp1 = NULL;
test->input = tmp1;
test->input->data1 = "hello";
其中最后两句给data1和data2赋值的语句编译报错(ubuntu上的gcc),报错说data1、data2 in something not a struct or union
改成下列语句后编译通过了
A* test;
B* tmp1;
tmp1->data1 = "hello";
*(tmp1->data2) = 1;
test->input = tmp1;
想问为什么第一种写法不会通过?
另外想问下面这个写法能够通过编译吗?
A* test;
B* tmp1 = (B*)(test->input);
tmp1->data1 = "hello";
已解决:
将其它类型的指针赋给void指针后,虽然可以赋值,但void指针本身的类型没有发生变化
万码JFG3236P
为什么c语言会有变量名长度限制,如果有为何不预编译的时候转换一下?
为什么c语言会有变量名长度限制,如果有为何不预编译的时候转换一下就得了?
万码JFG3236P
请教一个QT下OPenGL的开发问题主要关于EBO和VBO动态修改的问题?
小弟在做一个项目过程中需要完成这样的一个功能在运行过程中需要动态修改EBO和VBO以达到画面动态显示的目的,大致就是在mainwindow下选择需要载入的文件,然后程序读取文件,根据文件的内容改变原有的EBO和VBO于是有如下程序
首先是初始化
void SandTable::initializeGL()
{
initializeOpenGLFunctions();
// vertex shader
QOpenGLShader *vshader = new QOpenGLShader(QOpenGLShader::Vertex, this);
vshader->compileSourceFile("://shader/vert_green.vert");
// fragment shader
QOpenGLShader *fshader = new QOpenGLShader(QOpenGLShader::Fragment, this);
fshader->compileSourceFile("://shader/frag_green.frag");
program = new QOpenGLShaderProgram;
program->addShader(vshader);
program->addShader(fshader);
program->link();
program->bind();
read_csv();//读取点和引索
QVector pointindex;
{
QFile file("../DEM/demo.txt"); //DEM路径这里读取引索
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
qDebug()makeCurrent();
//选择加载数据库
QString fileName = QFileDialog::getOpenFileName(this, "选择数据库文件","/",tr("Files (*.db)"));
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(fileName);
if(!db.open())
{
QMessageBox::warning(this,"error",db.lastError().text());
}
else
{
//获取dem的长度和宽度
QSqlQuery query;
query.exec("SELECT * FROM attribute");
while(query.next())
{
// qDebug()doneCurrent();
this->update();
}
程序运行完后有一个奇怪的现象就是在LoadModel()实现了VBO的修改,但是EBO没有任何变化,他们的修改函数都在同一个函数中,按道理来讲VBO修改了,EBO也会跟着修改,但事实却是只修改了VBO!然后考虑到如果写入的EBO数据过多的原因,我特地的减小了EBO写入数据的大小,结果还是没有变化,求懂行的大神给予答复,解决后私我发红包!!
注:更新一下,试了下直接把更改EBO的代码放在resizeGL()中能够实现修改,后来又去查阅了资料发现在main函数中设置QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);也无效,知道了思路一定是在opengl上下文上出问题,但是在这个loadmodel函数里始终无法更改EBO不知道为什么,我也在loadmodel函数中调用了make、done这两个函数了呀
万码JFG3236P
如何使用bufferevent_write向浏览器发送MP3文件?
求解答,小文件能正发送至浏览器,大一点的发送失败,浏览器显示未收到服务器发送过来的数据
int send_file(struct bufferevent* bev,const char* filename)
{
int fd=open(filename,O_RDONLY);
if(fd == -1){
string str="open "s + filename +" failed"s;
perror(str.c_str());
return -1;
}
char buf[4096]{0};
int readsize=0;
int ret=0;
int sum=0;
while(1){
bzero(buf,sizeof(buf));
readsize=Read(fd,buf,sizeof(buf));
if(readsize == 0) break;
else if(readsize == -2) continue; // 连接是正常的,调用者 继续接收
else if(readsize == -1){ // 错误读取,退出调用
close(fd);
return -1;
}
ret=bufferevent_write(bev,buf,readsize);
// cout<<"errno = "<
万码JFG3236P
请教一下c语言数组问题?是什么问题导致程序一会能行一会不行?
需求:实现将数组中所有元素调整为左右两部分,左边为奇数,右边为偶数。(c语言)
int main(){
int size;
printf("enter the size of arr:");
scanf("%d",&size);
int arr[size];
for(int i;i
万码JFG3236P
数据结构栈打印函数(打印函数为什初始为地址base+1,为base打印不正确)?
#include
#include
#include
#define MAXSIZE 10
#define OWERFLOW -2
typedef struct stack
{
int *base;
int *top;
int stacksize;
}sqstack;
void Initstack(sqstack*s)
{
(*s).base=(int*)malloc(MAXSIZE);
if(!(*s).base) exit(OWERFLOW);
(*s).top=(*s).base;
(*s).stacksize=MAXSIZE;
printf("已完成初始化!\n");
}
int Emptystack(sqstack s)
{
if(s.top==s.base)
{
printf("栈空!\n");
return true;
}
else
return false;
}
int Lengthstack(sqstack s)
{
return s.top-s.base;
}
void Clearstack(sqstack s)
{
if(s.base)
s.top=s.base;
printf("栈已清空!\n");
}
void Destroystack(sqstack *s)
{
if((*s).base)
{
free ((*s).base);
(*s).stacksize=0;
(*s).base=(*s).top;
}
printf("栈已销毁!\n");
}
void push(sqstack*s,int e)
{
if((*s).top-(*s).base==(*s).stacksize)
{
printf("栈满!\n");
}
else
{
(*s).top++;
*(*s).top=e;
}
}
void pop(sqstack *s,int *e)
{
if((*s).top==(*s).base)
{
printf("栈空!\n");
}
else
{
(*e)=*(*s).top;
(*s).top--;
}
}
void print(sqstack s)
{
int i=0;
printf("元素:");
int*p=s.base+1;
for(i=0;i
万码JFG3236P
多线程中打印问题?
#include
#include
#include
void *testThread(void *arg){
printf("This is a thread test\n");
return NULL;
}
int main(){
pthread_t tid;
int ret;
ret = pthread_create(&tid,NULL,testThread,NULL);
printf("This is a main thread\n");
return 0;
}
我把这段代码编译为名为a.out的程序,然后又写了一个shell脚本,shell脚本的功能是无限运行程序,然后等2秒后,我停止运行shell脚本,然后我发现在某次运行a.out时,"This is a thread test\n"被运行了两次,我就有一点疑惑,按理来说,如果testThread有机会运行的话,最多只打印一次"This is a thread test\n",结果就只打印了两次,我就想弄明白,为什么"This is a thread test\n"会被打印两次。
shlle脚本的内容如下
!/bin/bash
while((1))
do
echo "-------------------";
./a.out
echo "--------------------";
done
运行的结果如下:
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816041533_sgcK.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724816041533_sgcK.png)
万码JFG3236P
Segmentation fault: in vtable for __cxxabiv1::__si_class_type_info () ?
类 Demo 里声明了一个虚函数,为什么调用虚函数时core 了呢?
core 信息:
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x0000aab1a12ab in vtable for __cxxabiv1::__si_class_type_info () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
class Demo {
public:
virtual int32_t Demo() {
return 0;
}
};
int main() {
Demo* d = new Demo();
d->show(); // core 到这里了
return 0;
}
万码JFG3236P
顺序存储,线性表的删除和插入中出现问题,未知代码哪里出错?
需求:编制C/C++程序,利用顺序存储方式实现下列功能:从键盘输入数据建立一个线性表(整数),并输出该线性表;然后根据屏幕提示,进行数据的插入或删除等操作,并在插入或删除数据后输出线性表。
代码出现问题,无法运行,错误提醒是delete那块红了,估计是它出问题。
未知是什么原因,望指教。
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
void init(SeqList *list) {
list->length = 0;
}
void insert(SeqList *list, int position, int value) {
if (position list->length || list->length == MAX_SIZE) {
printf("The insert position is invalid or the linear table is full:\n");
return;
}
for (int i = list->length - 1; i >= position; i--) {
list->data[i + 1] = list->data[i];
}
list->data[position] = value;
list->length++;
}
void delete(SeqList *list, int position) {
if (position = list->length) {
printf("Invalid delete location:\n");
return;
}
for (int i = position; i length - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->length--;
}
void print(SeqList *list) {
printf("Linear table contents:");
for (int i = 0; i length; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
int main() {
SeqList list;
init(&list);
printf("Please enter the length of the linear table:");
scanf("%d", &list.length);
if (list.length > MAX_SIZE) {
printf("The linear table length exceeds the maximum value:\n");
return 0;
}
printf("Enter the elements of the linear table:");
for (int i = 0; i < list.length; i++) {
scanf("%d", &list.data[i]);
}
print(&list);
int operation, position, value;
printf("\nplese select:\n"); printf("1. insect the data:\n");
printf("2. delete the data\n");
printf("0. exit\n");
while (1) {
printf("\nplease enter the ops:");
scanf("%d", &operation);
if (operation == 1) {
printf("Please enter insert position and insert value (separated by space):");
scanf("%d %d", &position, &value);
insert(&list, position, value);
} else if (operation == 2) {
printf("Please enter the deletion location:");
scanf("%d", &position);
delete(&list, position);
} else if (operation == 0) {
break;
} else {
printf("Invalid operation number:\n");
}
print(&list);
}
return 0;
}
顺便提问一句我的DEVC++底下变成这样,应该怎么恢复到初始可以看见报错原因的状态?
"https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724815714812_7GjD.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/community/1724815714812_7GjD.png)
菜鸟上路,万分感谢指教。
万码JFG3236P
我的opencv2的imread为什么不运作?
这是调用代码,windows平台的.
unsigned* fun(const char *path)
{
unsigned *result=new unsigned[75];
int l=strlen(path);
char * pp=new char[l];
for(int i=0;i
万码JFG3236P
请教一下c语言数组问题?是什么问题导致程序一会能行一会不行?
需求:实现将数组中所有元素调整为左右两部分,左边为奇数,右边为偶数。(c语言)
int main(){
int size;
printf("enter the size of arr:");
scanf("%d",&size);
int arr[size];
for(int i;i
万码JFG3236P
C++可变参数输出结果错误?
如下代码为什么输出的结果不是1,2,3,4?
而是输出了错误的结果:1803629872 77304476 1803629872 0
#include
#include
// 函数:打印可变参数的值
void printValues(int count, ...) {
va_list args;
va_start(args, count);
for (int i = 0; i < count; ++i) {
int value = va_arg(args, int);
std::cout << value << " ";
}
va_end(args);
}
// 函数:将可变参数传递给另一个带有可变参数的函数
void processValues(int count, ...) {
va_list args;
va_start(args, count);
printValues(count, args);
va_end(args);
}
履历
用户运营
成都万码科技有限公司
2024.07-至今
,
上海出版印刷高等专科学校
大专
2022.10-2025.06