c语言编写cgi程序,无法加载lib文件的问题

用c写的cgi程序,如果编译时不加载lib文件,一切正常,但是只要加载了lib文件,编译出来的可执行程序在服务器(UNIX)上运行结果一切正常,但是无法在网页中调用,会在网页中出现如下错误信息:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, ems@szweb and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
服务器的错误信息是Premature end of script headers。
    请高手指点,急呀!!

回复讨论(解决方案)

坐个沙发
友情UP
"但是只要加载了lib文件,编译出来的可执行程序在服务器(UNIX)上运行结果一切正常“
什么叫正常呢?有调试过确认如果参数正确传递后能显示正确的内容吗?再试试,应该没问题的。
你的库的位置没有指定好
可能dll不在path里
显示是CGI程序执行时无法定位动态库的位置,而后终止程序运行所致. 
在Shell环境中, 动态库可以在环境变量中指定并得到定位, 而作为CGI程序执行时, WEB 服务器传递给CGI文件时, 只传递给CGI程序CGI-1.1规定定的环境变量, 全局的环境变量并不没有传递给CGI执行程序. 所以必然会出错.

解决方法, 你可以把你自己做的库放在系统库所在的目录,或直接用静态库链接到你的CGI程序中.


============================
另外, 用 C 写CGI程序就不防试试用 CSP (C Language Service Page), 就是直接将 C 语言嵌入到HTML中, 最后再将CSP源文件翻译成 C 文件. 这样会大大提供 C 开发CGI的工作效率. 同时, CSP的集成开发环境 eybuild 还提供了很多方便用C开发的cgi libs, 可以运行在Windows/各种Unix下的所有支持 CGI-1.1标准的WEB 服务器. 因为eybuild的跨平台性等, 目前是CGI程序开发最佳选择.


中文手册 下载: http://www.eybuild.com/develop/doc/manual/eyBuild_manual_ch.pdf
eybuild 开发环境免费下载: http://www.eybuild.com/develop/download/eyBuild-00-07-00.tar.gz
更多信息: http://www.eybuild.com

上面还有很多有关 CGI开发相关的文档/源程序可供免费下载.
你是否使用了动态库,另外检查给 CGI 使用的用户,这个用户的环境可能和你登陆 UNIX 的用户的环境有不同,如路径和权限等。另外低级一点的问题,你的程序是否输出了 content-type: text/html\n\n,虽然低级,但常常会被忽略。

你可能感兴趣的:(c语言编写cgi程序,无法加载lib文件的问题)