C 带Windows的GNUTLSAPI
我正在尝试在窗口机器上使用gnutlaspi,遗憾的是它无法工作。我下载了Windows gnutls-3.3.9-w32.zip的最新预编译版本 每次我调用GnuTLS函数时,我的程序可能都无法工作。对于测试,只有两行代码: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-
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目录,最终成功了!谢谢