2016-12-19 4 views
0

私はosip2ライブラリバージョン5.0.0で簡単なプログラムを実行しようとしています。 これは私のコードです。私は理解できないエラーがあります。 私はコードブロックを使用しています。osip2コードブロックエラーをコンパイルする

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include <osip2/osip.h> 
#include <osipparser2/osip_parser.h> 
#include <string.h> 
#include <winsock2.h> 

int main() { 

    int i; osip_t *osip; i=osip_init(&osip);  if (i!=0)  return -1; } 

エラー:ライブラリ内のコードのこの部分を示す

||=== Build: Debug in cos2 (compiler: GNU GCC Compiler) ===| 
..\libosip2-5.0.0\libosip2-5.0.0\include\osip2\osip.h|211|error: field 'timer_a_start' has incomplete type 'timeval'| 
..\libosip2-5.0.0\libosip2-5.0.0\include\osip2\osip.h|213|error: field 'timer_b_start' has incomplete type 'timeval'| 
..\libosip2-5.0.0\libosip2-5.0.0\include\osip2\osip.h|215|error: field 'timer_d_start' has incomplete type 'timeval'| 
..\libosip2-5.0.0\libosip2-5.0.0\include\osip2\osip.h|232|error: field 'timer_e_start' has incomplete type 'timeval'| 
..\libosip2-5.0.0\libosip2-5.0.0\include\osip2\osip.h|234|error: field 'timer_f_start' has incomplete type 'timeval'| 
..\libosip2-5.0.0\libosip2-5.0.0\include\osip2\osip.h|236|error: field 'timer_k_start' has incomplete type 'timeval'| 
..\libosip2-5.0.0\libosip2-5.0.0\include\osip2\osip.h|254|error: field 'timer_g_start' has incomplete type 'timeval'| 
..\libosip2-5.0.0\libosip2-5.0.0\include\osip2\osip.h|256|error: field 'timer_h_start' has incomplete type 'timeval'| 
..\libosip2-5.0.0\libosip2-5.0.0\include\osip2\osip.h|258|error: field 'timer_i_start' has incomplete type 'timeval'| 
..\libosip2-5.0.0\libosip2-5.0.0\include\osip2\osip.h|273|error: field 'timer_j_start' has incomplete type 'timeval'| 
..\libosip2-5.0.0\libosip2-5.0.0\include\osip2\osip.h|294|error: field 'srv_is_broken' has incomplete type 'timeval'| 
..\libosip2-5.0.0\libosip2-5.0.0\include\osip2\osip.h|536|error: field 'start' has incomplete type 'timeval'| 
C:\Users\emergency\Documents\analizer\cos2\main.cpp|8|error: '::main' must return 'int'| 
C:\Users\emergency\Documents\analizer\cos2\main.cpp||In function 'int main()':| 
C:\Users\emergency\Documents\analizer\cos2\main.cpp|16|error: cannot convert 'osip_message_t** {aka osip_message**}' to 'osip_t** {aka osip**}' for argument '1' to 'int osip_init(osip_t**)'| 
||=== Build failed: 14 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===| 

エラー:

struct osip_ict { 
    int timer_a_length;       /**< Timer A A=T1, A=2xT1... (unreliable only) */ 
    struct timeval timer_a_start;     /**< Timer A (retransmission) */ 
    int timer_b_length;       /**< Timer B B = 64* T1 */ 
    struct timeval timer_b_start;     /**< Timer B (fire when transaction timeout) */ 
    int timer_d_length;       /**< Timer D D >= 32s for unreliable tr (or 0) */ 
    struct timeval timer_d_start;     /**< Timer D */ 
    char *destination;       /**< IP used to send requests */ 
    int port;          /**< port of next hop */ 
    }; 
+0

私はtimeval構造がTime.hファイルに関連付けられていると思うhttps://msdn.microsoft.com/en-us/library/windows/desktop/ms740560(v=vs.85).aspx – cthulhu

答えて

1

構造timeval標準のC構造ではありません、それはUnixの世界に発信されPOSIXで標準化されています。

<winsock2.h>ヘッダーファイルに定義されています(select「ネットワーク」機能で使用されているため、詳しくはthis struct timeval reference on MSDNを参照してください)。

<osip2\osip.h>での構造体を使用した後に<winsock2.h>を含めると、エラーが発生します。最も簡単な解決策は、インクルードファイルの順序を並べ替えることです。

関連する問題