MSSQL无法在库中找到该函数

时间:2015-03-18 10:55:26

标签: c++ sql-server sql-server-2008 extended-procedures

我想测试扩展存储过程(我知道它们现在已被弃用,但出于个人原因我想测试它们。)

我在VC ++中生成了一个dll文件,这是我的代码:

//First.h
#include<iostream>
#include<srv.h>

using namespace std;

RETCODE _declspec(dllexport)  xp_firstfun(SRV_PROC *srvproc);

//main.cpp
#include<iostream>
#include "First.h"

using namespace std;


RETCODE xp_firstfun(SRV_PROC *srvproc)
{
    cout<<"Hello World froom DLL"<< endl;
    cin.get();
    return 0;
}

我可以使用此命令成功将此dll添加到数据库:

sp_addextendedproc 'xp_firstfun', 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn\FirstDLL.dll'

但如果我尝试执行该功能:

exec xp_firstfun

我正面临这个错误:

无法在库C:\ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ Binn \ FirstDLL中找到函数xp_firstfun。原因:127(找不到程序)。

我有两个问题:

  • 我的C ++代码是否正确?
  • 我应该在SQL中做更多的事情来在dll中调用这个函数吗?

谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

更改您的声明。这可能会对您有所帮助,因为在c ++中,函数名称在编译期间被修改为名称修改的一部分。

extern "C"
{
    RETCODE _declspec(dllexport)  xp_firstfun(SRV_PROC *srvproc);
}