dll中使用命名空间,就不能生成.lib,高手来解决啊,在线等,立即给分!!
如题,我想为把stConverse函数添加到命名空间api中,可编译后就只有dll文件,没有.lib文件了?去掉namespace那条语句后就可以生成.lib了。
我又想保留命名空间,又想要有.lib,请问怎么解决啊?
//这是dll工程中的头文件代码
#include <string>
namespace api
{
#define STRING_TOOL_INTERFACE __declspec(dllexport)
STRING_TOOL_INTERFACE std::string stConverse(const std::string &src);
}
[解决办法]
你生成dll的时候就去掉名字空间吧
不过建议你使用标准DLL 用extern "C "
[解决办法]
加extern "C "后就没有名字空间这个东西了
[解决办法]
namespace 是C++语言的东西,DLL是个Binary的标准,怎么会支持namespace? 如果Visual Basic调用怎么办?去掉namespace, 另外不要用string作为参数和return值。 如果调用的.exe和你的DLL不是用一个Heap(一个Debug Build,一个Release Build,或者用不同的msvcrt版本).会立即Crash掉。(因为返回String的new 和 delete不在一个Heap上)STL的东西最好在Module内部用。