在C ++代码中使用K& R风格的C函数

时间:2013-04-10 08:48:57

标签: c++ c visual-studio-2010 visual-c++

我正在尝试在VS2010的VC ++项目中使用oncrpc-windows项目。 oncrpc导出svc.h文件中没有任何参数的函数,但事实上函数有参数。例如,头文件导出

#define DllExport   __declspec( dllexport ) 
...
DllExport SVCXPRT *svcudp_create();

the implementation file包含

SVCXPRT * svcudp_create(sock)
    int sock;
{

    return(svcudp_bufcreate(sock, UDPMSGSIZE, UDPMSGSIZE));
}

如果我尝试创建使用导出函数的C文件,那么一切正常,代码编译成功。问题是我无法在CPP代码中使用导出的函数,编译器会停止并显示以下消息

  

错误C2660:'svcudp_create':函数不带1个参数

我尝试使用extern "C",但它没有帮助。我想知道如何在VC ++项目中使用导出的函数?是否真的需要使用正确的签名编写自己的头文件?

1 个答案:

答案 0 :(得分:0)

在编译.cc或.cpp文件之前,您需要编译任何使用K& R样式语法的.c文件到目标文件。这应该在MakeFile中完成。

示例:

PNAME = "ProjectName"
PROGRAM_FILES = program.cpp program.h

svc.o: svc.c svc.h
    gcc -c $< -o $@
program.o: $(PROGRAM_FILES)
    gcc -c $< -o $@
all: svc.o program.o
    gcc $< -o $(PNAME)
clean:
    -rm -f *.o $(PNAME)