C Axis2无法加载DLL

C Axis2无法加载DLL,c,axis2,C,Axis2,我在Apache-Axis2日志文件中看到了下面这一行 [Sat Nov 14 12:16:08 2015] [error] ..\..\util\src\class_loader.c(167) Loading shared library ..//lib/axis2_http_sender.dll Failed. DLERROR IS DLL Load Error 126: The specified module could not be found. 在分析从第156行到第167行的c

我在Apache-Axis2日志文件中看到了下面这一行

[Sat Nov 14 12:16:08 2015] [error] ..\..\util\src\class_loader.c(167) Loading shared library ..//lib/axis2_http_sender.dll  Failed. DLERROR IS DLL Load Error 126: The specified module could not be found.
在分析从第156行到第167行的class_loader.c文件时,如下所示:

dll_name = axutil_dll_desc_get_name(dll_desc, env);
    AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Shared library to be loaded is %s",dll_name);
    dl_handler = AXIS2_PLATFORM_LOADLIB(dll_name);
    if (!dl_handler)
    {        
#ifndef WIN32
        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Loading shared library %s  Failed. DLERROR IS %s", 
            dll_name, AXIS2_PLATFORM_LOADLIB_ERROR);
#else
        axis2_char_t buff[AXUTIL_WIN32_ERROR_BUFSIZE];
        axutil_win32_get_last_error(buff, AXUTIL_WIN32_ERROR_BUFSIZE);
        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Loading shared library %s  Failed. DLERROR IS %s",dll_name, buff);
我猜问题出在第一行-
dll\u name=axutil\u dll\u desc\u get\u name(dll\u desc,env)
dll\u name
中存储的值是
。//lib/axis2\u http\u sender.dll
。尽管存在
axis2\u http\u sender.dll
在与可执行文件相关的lib目录中,链接器无法连接到它

我从未见过下面这样的文件名语法:

。//lib/axis2\u http\u sender.dll

我在Windows命令行中测试了它,它的工作原理如下:

。/lib/axis2\u http\u sender.dll

C 像fopen()这样的函数

我确实尝试了一些代码示例

下面是一段C代码:

FILE *fp;
fopen_s(&fp,"C://tempfile.txt", "w");
fputs("Text content", fp);
fclose(fp);

上面的代码对我来说很好。

终于破解了这个。
这篇博文表明Axis2C Windows发行版依赖于OpenSSL DLL。

我使用以下命令列出了axis2_apache_server.exe的dll依赖项。

listdlls axis2_apache_server.exe
列表显示运行它需要两个ssl DLL
libeay32
ssleay32
。但是,Axis2二进制发行版中缺少这两个DLL。

(我不知道为什么&我认为应该包括它。此外,Axis2文档中没有提到这一点。)

上述DLL可在
Apache2
OpenSSL
中找到。我已将这些DLL的路径添加到我的路径变量中。

我运行了axis2_apache_server.exe,瞧

结论:文件路径中连续的
/
完全不会影响链接。

道德:应首先检查exe文件的dll依赖关系,并确保在遇到dll加载错误时所有dll都存在。


虽然是刻苦学习的道德

超过一个连续的
/
被忽略。@sjsam的跨站点副本-我相信你应该尝试探索一下,而不是在这里询问。那才是真正的乐趣;我被
用这种语法打开文件时弄糊涂了。我首先想到“为什么在已经打开的文件上使用此语法”,但您的问题是
在打开文件时使用此语法
。也许可以像
这样重新表述它,我可以将它用于C中的
open()`和
fopen()
调用吗?我想不会,但正如我所说,我不是Windows专家。我在另一个问题上悬赏;希望这足以让人看一看。