Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 带Windows的GNUTLSAPI_C_Windows_Dll_Gnutls - Fatal编程技术网

C 带Windows的GNUTLSAPI

C 带Windows的GNUTLSAPI,c,windows,dll,gnutls,C,Windows,Dll,Gnutls,我正在尝试在窗口机器上使用gnutlaspi,遗憾的是它无法工作。我下载了Windows gnutls-3.3.9-w32.zip的最新预编译版本 每次我调用GnuTLS函数时,我的程序可能都无法工作。对于测试,只有两行代码: printf ("hello"); gnutls_global_init(); 如果我删除了第二行,它将无错误地生成,但不会打印hello。因此,在GnuTLS的使用中肯定存在错误 我包括libgnutls-28.dll gcc "-LC:GnuTLS\\gnutls-

我正在尝试在窗口机器上使用gnutlaspi,遗憾的是它无法工作。我下载了Windows gnutls-3.3.9-w32.zip的最新预编译版本

每次我调用GnuTLS函数时,我的程序可能都无法工作。对于测试,只有两行代码:

printf ("hello");
gnutls_global_init();
如果我删除了第二行,它将无错误地生成,但不会打印hello。因此,在GnuTLS的使用中肯定存在错误

我包括libgnutls-28.dll

gcc "-LC:GnuTLS\\gnutls-3.3.9-w32\\bin" -o Test.exe test.o -llibgnutls-28 
我是否必须以某种方式链接libgnutls.dll.a文件

我是否必须以某种方式链接libgnutls.dll.a文件

对。建立链接库是必需的。但你说它正在建造好的。。。为了支持Marc B的说法,请测试您的printf是否正常工作:

printf ("hello");
getchar();                    // to stop execution before calling init  
//Check the return of your init function
status = gnutls_global_init();//On success, GNUTLS_E_SUCCESS (zero) is returned, 
对于测试,只有两行代码: 添加更多内容以检查init函数的状态:

if(status < 0)                //otherwise an error code is returned.
{
     //handle error
} 
单击以查看手册页

要检查的另一件事是.dll的位置

确保它在运行时对可执行文件可见。将其放入.exe中的任意一个。目录,或系统的$SYSTEM$目录中


对人们来说,一个通俗的说法是。Windows 7或8上32位应用程序的Windows系统目录为c:\Windows\sysWoW64\e,即不是c:\Windows\system32。讽刺的是,64位应用程序的系统目录是c:\windows\system32\

强制缓冲区刷新,因为tls可能会杀死您的终端。e、 g.printfhello\n;。thx,但对我不起作用。你检查过gnutls_global_init的返回了吗?无法首先读取状态,但多亏了你的第二个错误定位提示。我找到的DLL似乎有一些。DLL已丢失。将它们复制到.exe目录,最终成功了!谢谢