#include <stdio.h>;
#include <windows.h>;
#include <malloc.h>;
typedef int (__cdecl *MYPROC)( void *epcs, char *message, char *sign,unsigned int *sig_len );
main();
{
HINSTANCE hh;
MYPROC hhLib;
void *j;
int *x = (int*)malloc(8);
unsigned int *y = (unsigned int*)malloc(8);
int *z = (int*)malloc(8);
char *msg, *sign ;
msg = (char*)malloc(512*sizeof(char));
sign = (char*)malloc(512*sizeof(char));
*x = 2541;
*y = 10;
*z = 0;
j = (int*)*x;
msg = "Test of MSG";
sign = "Test of Sign";
hh = LoadLibrary("epcs.dll");
if (hh == NULL) {
printf("Unable to load epcs shared library\n");
return 0;
}
hhLib = (MYPROC)GetProcAddress(hh, "epcs_test");
if (hhLib==NULL) {
printf("Unable to point shared library function (epcs_test).. \n");
return 0;
}
z = hhLib(j, msg, sign, y);
printf("%d \n",*x);
printf("%d \n",j);
printf("%d \n",*y);
printf("%d \n",*z);
printf("%s \n",msg);
printf("%s \n",sign);
return 0;
}
質問する
223 次
3 に答える
1
このコードには非常に多くの問題があります。
この蒸れた排泄物の山を掃除し始めましょう。
main();
Main は である必要がありint main(void)
、後にセミコロンがあってはなりません。
の戻り値をキャストしないでください
malloc
。適切な量のスペースを割り当てていることを確認するために使用します。
sizeof()
これを変える:
int *x = (int*)malloc(8);
これに:
int *x = malloc(sizeof(int));
これは、C で文字列の割り当てを行う方法ではありません。
msg = "Test of MSG";
sign = "Test of Sign";
代わりに、次のようにします。
strcpy(msg, "Test of MSG");
strcpy(sign, "Test of Sign");
注: strcpy には独自の問題があり、strcpy_s が推奨されます。でも一歩ずつ。
于 2013-08-29T15:03:57.587 に答える