搜索
查看: 509|回复: 4

调用httpapi.dll函数HttpInitialize返回1154,期望0/*_NOERROR*/

[复制链接]

13

主题

28

帖子

206

积分

培训班

积分
206
发表于 2017-12-2 13:23:19 | 显示全部楼层 |阅读模式
本帖最后由 znkee 于 2017-12-2 13:29 编辑

调用系统httpapi.dll,第一步函数就遇到问题了,HttpInitialize返回1154,MSDN解释:运行此应用程序所需的库文件之一被损坏,期望返回0/*_NOERROR*/


  1. //RUNAS//
  2. import console;
  3. import raw;

  4. var dll=raw.loadDll("httpapi.dll",);

  5. HTTPAPI_VERSION=class {
  6.         ctor( Major ){
  7.         };
  8.         WORD HttpApiMajorVersion=Major or 1;
  9.     WORD HttpApiMinorVersion=0;
  10. }
  11. HTTPAPI_VERSION_1=HTTPAPI_VERSION();
  12. HTTPAPI_VERSION_2=HTTPAPI_VERSION(2);

  13. HTTP_INITIALIZE_SERVER=0x1;
  14. HTTP_INITIALIZE_CONFIG=0x2;

  15. console.dump("sizeof(HTTPAPI_VERSION_2)",raw.sizeof(HTTPAPI_VERSION_2))
  16. console.dump("dll.HttpInitialize",dll.HttpInitialize)

  17. var pReserved=null;
  18. var code=0;
  19. //xp server2003 用HTTPAPI_VERSION_1  win7以上用HTTPAPI_VERSION_2
  20. code,pReserved = dll.HttpInitialize(HTTPAPI_VERSION_1,HTTP_INITIALIZE_SERVER,pReserved)
  21. //code==0x0/*_NOERROR*/才成功,可是一直返回1154:运行此应用程序所需的库文件之一被损坏。
  22. console.dump(code, pReserved)

  23. console.pause()
复制代码


MSDN :
函数原型 https://msdn.microsoft.com/en-us/library/windows/desktop/aa364488(v=vs.85).aspx
HTTPAPI_VERSION https://msdn.microsoft.com/en-us/library/windows/desktop/aa364476(v=vs.85).aspx

另外,同一台电脑上,在delphi中能成功调用,操作系统win10
回复

使用道具 举报

151

主题

2381

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13090
发表于 2017-12-2 14:35:38 | 显示全部楼层
其实就是一句代码的事,
import console;
var dll = raw.loadDll("httpapi.dll");

var err = dll.HttpInitialize(1,1/*HTTP_INITIALIZE_SERVER*/,null);

console.dump(err);
console.pause();

API参数用到结构体的地方基本都是用指针,aardio里的结构体参数也都是指针(也就是结构体的地址,而不是他的值),
HTTPAPI_VERSION看上去是个结构体,实际上就是一个32位整数。

调用API,没有一点C,C++基础是不行的。
回复

使用道具 举报

151

主题

2381

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13090
发表于 2017-12-2 14:41:11 | 显示全部楼层
aardio里创建HTTP服务器本来就很方便,
要简单的可以用 wsock.tcp.simpleHttpServer,
要强大的可以用 IIS的 FastCGI。
都只要几句代码。

但是你们每个人有每个人的想法,都想搞一套自己的HTTP服务器,
有的人非要用nginx,有的人还要跑去用httpapi,还有人要用VB6的控件去写。
回复

使用道具 举报

13

主题

28

帖子

206

积分

培训班

积分
206
 楼主| 发表于 2017-12-2 14:56:44 | 显示全部楼层
谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-4-27 06:59 , Processed in 0.062500 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表