3

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

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

实现文件包含

SVCXPRT * svcudp_create(sock)
    int sock;
{

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

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

错误 C2660:“svcudp_create”:函数不接受 1 个参数

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

4

1 回答 1

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)
于 2018-03-16T03:34:14.683 回答