我正在尝试创建一个导出许多函数的Windows DLL,无论我的所有函数都被导出但是一个!!
我无法理解。
我使用的宏很简单:
__declspec(dllexport) void myfunction();
它适用于我的所有功能,除了一个。我查看了Dependency Walker,在这里他们都是,除了一个。
怎么会这样?这是什么原因?我被卡住了。
编辑:更确切地说,这是.h中的函数:
namespace my {
namespace great {
namespace namespaaace {
__declspec(dllexport) void prob_dump(const char *filename,
const double p[], int nx, const double Q[],
const double xlow[], const char ixlow[],
const double xupp[], const char ixupp[],
const double A[], int my, const double bA[],
const double C[], int mz,
const double clow[], const char iclow[],
const double cupp[], const char icupp[]
);
}}}
在.cpp文件中,它是这样的:
namespace my {
namespace great {
namespace namespaaace {
namespace {
void dump_mtx(std::ostream& ostr, const double *mtx, int rows, int cols, const char *ind = 0)
{
/* some random code there, nothing special, no statics whatsoever */
}
} // end anonymous namespace here
// dump the problem specification into a file
void prob_dump(
const char *filename,
const double p[], int nx, const double Q[],
const double xlow[], const char ixlow[],
const double xupp[], const char ixupp[],
const double A[], int my, const double bA[],
const double C[], int mz,
const double clow[], const char iclow[],
const double cupp[], const char icupp[]
)
{
std::ofstream fout;
fout.open(filename, std::ios::trunc);
/* implementation there */
dump_mtx(fout, Q, nx, nx);
}
}}}
由于
答案 0 :(得分:2)
我找到了解决办法:
当我将__declspec(dllexport)
添加到函数定义时,在cpp文件中,它将被导出。
我绝对不知道为什么会这样,因为MSDN似乎没有提到这样做。
答案 1 :(得分:0)
你没有足够的帮助,但是你可以检查一些事情。
确保通过手动删除它来生成.dll文件并重建项目。
您是否也在使用.def文件?
只能导出类中的公共成员函数。