先说一个福星,罗sir,只要和他废话一下,尽管谈一些没用的话,总会灵机一动得出有用的想法...
我用的是C语言(因为是标准Windows API函数输出,所以还是在Visual C++上写)
先是C的一些函数,比如创建空包裹时候写入一些空long值,应该是1024字节,后来多了16字节,函数是
fwrite(&lngBlank,4,4,f);
lngBlank 与源代码无关,只是做个比喻,第一个4就是sizeof(long),第二个4开始不明白,f是文件指针
后来跟罗sir废话一下,没什么结果,突然发现16是4的平方,于是把后面的4改为1,文件少了12字节,也就
是只多了4字节,再把for 循环的 1024 改为1020 也就是从1021开始写4字节(fseek定位)就Okay了
我想C中的读写过程是 根据文件指针f读写当前指针4字节数给变量lngBlank 指针下移4字节然后重复
4次,于是多写了个NULL和一个字符串变量的内容 - -
然后是对路径的判断,C中字符串都是正则表达式, / 是转义字符,所以路径要先转义,如:
"C:/Test.pkg "
要写成
"C://Test.pkg"
而函数输出API给其他语言调用,比如VB的路径是写成C:/Test.pkg,我的做法是根据字符串指针,如果遇
到'/'且后面一个字符不是'/'就加一个'/'给它,后来显示编译出现:
- newline constant (常量出现换行)
于是改为'//',编译通过,但是还是无法得到'/',得到一个乱码字符,甚至用'/'的ASCII - 92 来判断也不行,没
办法,找罗sir聊了下,他说没办法,除非你改C文件头的源代码,还是没结果,扛走了他一个显示器(天气潮湿,
我的显示器Over了),回来突然一闪念,测试一下得出结果是:
C在编译字符串的时候会把'/'后的一个字符转义,在内存中根本不存在'/'字符,而VB等语言会直接把'/'字符
的二进制数据写入内存,于是char * 变量从VB是可以直接用String变量传递过来的 - -
还有一些细节的东西是多试试就知道的,像fseek函数 0代表的位置等等,希望对遇到同样问题的人有帮助,
也希望以后这方面很熟练的同志能多帮帮某人...
分享到:
相关推荐
opengl 库函数的dll GLut.dll,GLU32.dll,glut32.dll,OPENGL32.dll
Delphi7自带indy ssl需要的 libeay32.dll,ssleay32.dll 亲测试有效
,担资源分实在太多,一次性把所有分都用上了,但我觉得需要的都是比较紧急的情况,所以也就小分重上,给一些用DELPHI的老将们提供一点小小资源 :包中附含各种版本集合libeay32.dll+ssleay32.dll.zip,至少解决了...
(1) 把 glaux.dll、glut32.dll、glut.dll 拷贝到C:\WINDOWS\system32目录下,system32目录下应该已经有 opengl32.dll、glu32.dll了。 (2) 把 GL.H、GLAUX.h、glu.h、glut.h 拷贝到 C:\Program Files\Microsoft ...
fnthex32.dll是斑马条码打印机驱动程序中的一个重要dll文件,缺少它可能造成打印机无法正常使用。当你的电脑弹出提示“没有找到fnthex32.dll”或者“丢失fnthex32.dll”等错误信息,请下载小编为你提供的dll文件,...
完美解决MySQL安装过程中的各种缺少libeay32.dll和ssleay32.dll的问题!以及各种无法定位程序输入点于XXX的问题!在MySQL8.0.17上测试完美通过! 文件使用方法、具体放置位置请见文件内的说明。文件分数可能较高,...
windows xp dll :advapi32.dll user32.dll gdi32.dll kernel32.dll
delphi 开发网络通讯程序,Indy 10 需要用到的libeay32.dll 和 libssl32.dll
Everything32.dll和Everything64.dll 用于编程调用。
delphi indy idhttp 访问https 需要动态库 64位,亲测可用,测试版本delphi 10.3。包括ssleay32.dll和libeay32.dll
DELPHI7做IDHTTP开发SSL时,提示使用的2个DLL文件 libeay32.DLL 和 ssleay32.DLL 亲测可用
网络上的advapi32.dll文件是老版本的,新版本的基本上不容易找到。 WIN XP具有DLL的自动恢复功能,当DLL文件缺失可以进行恢复,但是DLL本身出现了问题就显得有点儿力不从心了! 提取时间:2010.2.24用于核对版本。 包...
libeay32.dll 和 ssleay32.dll
kernel32.dll|advapi32.dll|gdi32.dll|user32.dll|exeplorer.exe 基于win 7 64位提取,包括 syswow64和system32两个文件夹内的系统核心DLL文件
libeay32.dll + ssleay32.dll ,这个是64位的2个dll。 http/https的时候解决Could not load SSL library的问题。
openssl官网下载的openssl源码,编译生成的libeay32.dll、ssleay32.dll.
Visual studio 2010开发的C++工程调用mysql,运行过程中显示缺失的libeay32.dll+ssleay32.dll文件(64位),将这两个文件复制到“C:\Windows\System32”路径,并手动注册可以解决该问题。
libeay32.dll ssleay32.dll Delphi2010 indy10 支持 TLS1.2
idhttp 访问HTTPS 网站,需要这两个DLL, 你需要把这两个DLL放在你的程序的相同的目录。
[DllImport("avicap32.dll")]//包含了执行视频捕获的函数,它给AVI文件I/O和视频、音频设备驱动程序提供一个高级接口 public static extern IntPtr capCreateCaptureWindow(string lpszWindowName, int dwStyle, ...