C 使用多个文件时获取链接错误LNK2019`

C 使用多个文件时获取链接错误LNK2019`,c,C,我试图在visual studio 2010中编译以下文件: 本教程摘自 /*callback.c*/ #include<stdio.h> #include"reg_callback.h" /* callback function definition goes here */ void my_callback(void) { printf("inside my_callback\n"); } int main(void) { /* initialize func

我试图在visual studio 2010中编译以下文件:

本教程摘自

/*callback.c*/

#include<stdio.h>
#include"reg_callback.h"

/* callback function definition goes here */
void my_callback(void)
{
    printf("inside my_callback\n");
}

int main(void)
{
    /* initialize function pointer to
    my_callback */
    callback ptr_my_callback=my_callback;                           
    printf("This is a program demonstrating function callback\n");
    /* register our callback function */
    register_callback(ptr_my_callback);                             
    printf("back inside main program\n");
    return 0;
}
typedef void (*callback)(void);
void register_callback(callback ptr_reg_callback);
#include<stdio.h>
#include"reg_callback.h"

/* registration goes here */
void register_callback(callback ptr_reg_callback)
{
    printf("inside register_callback\n");
    /* calling our callback function my_callback */
    (*ptr_reg_callback)();                                  
}
/*reg\u callback.c*/

#include<stdio.h>
#include"reg_callback.h"

/* callback function definition goes here */
void my_callback(void)
{
    printf("inside my_callback\n");
}

int main(void)
{
    /* initialize function pointer to
    my_callback */
    callback ptr_my_callback=my_callback;                           
    printf("This is a program demonstrating function callback\n");
    /* register our callback function */
    register_callback(ptr_my_callback);                             
    printf("back inside main program\n");
    return 0;
}
typedef void (*callback)(void);
void register_callback(callback ptr_reg_callback);
#include<stdio.h>
#include"reg_callback.h"

/* registration goes here */
void register_callback(callback ptr_reg_callback)
{
    printf("inside register_callback\n");
    /* calling our callback function my_callback */
    (*ptr_reg_callback)();                                  
}
#包括
#包括“reg_callback.h”
/*登记在这里*/
无效寄存器回调(回调ptr\u reg\u回调)
{
printf(“内部寄存器_回调\n”);
/*调用我们的回调函数my_callback*/
(*ptr_reg_callback)();
}
但我得到了这个链接错误:

错误1错误LNK2019:未解析的外部符号“void\uu cdecl” 注册回调(void(u cdecl*)(void))” (?寄存器u回调)@@YAXP6AXXZ@Z)在函数中引用 _主D:\VS\test\ww\ww\ww.obj ww


这里出了什么问题,我不明白。请帮忙

您需要在
extern“C”{…}
IIRC@leppie你能准确地写下如何包装吗?我在“C”{typedef void(*callback)(void);void register_callback(callback ptr_reg_callback)}中添加了外部代码,但是没有工作。如果您的代码使用
gcc callback.C reg_callback.C
,您应该提供有关VS项目的更多信息(W32控制台或W32窗口等)