0

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

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

printf ("hello");
gnutls_global_init();

它会毫无错误地构建,但如果我删除它的第二行,它不会打印“你好”。所以 GnuTLS 的使用肯定是有误的。

我包括了 libgnutls-28.dll

gcc "-LC:GnuTLS\\gnutls-3.3.9-w32\\bin" -o Test.exe test.o -llibgnutls-28 

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

4

1 回答 1

0

我是否必须以某种方式链接 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
} 

单击 gnutls_global_init 获取手册页。

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

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

人们的一个问题是WoW64。Windows 7(或 8)上 32 位应用程序的 Windows 系统目录是 c:\windows\sysWoW64\(即不是 c:\windows\system32)。 具有讽刺意味的是, 64 位应用程序的系统目录是c:\windows\system32\。

于 2014-11-10T16:18:59.720 回答