动态库项目编译后只产生dll,没有lib,这是怎么回事呢? 好像在生成dll的时候,lib是中间文件吧?但debug目录里只有dll生成。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不是纯资源dll,源程序都是自己写的。我用一个笨的方法是再新建一个static lib project,然后项目中把dll项目相关的源代码都import进来。然后产生一个lib,再拷贝到exe项目中,但这样很麻烦,有没有直接dll项目中产生lib的设置? Project->Setting->Link->General中,是不是选择了"Doesn't produce .LIB"?另外,这个lib跟你说的static lib不是一回事. 没有在general中只有“产生调试信息”和“增加链接”打了勾。在下面的工程选项里是这样的:kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"Debug/scom.pdb" /debug /machine:I386 /out:"Debug/scom.dll" /implib:"Debug/scom.lib" /pdbtype:sept 为什么这里显示有scom.lib 却没有产生这个文件呢? 我现在需要创建一个DLL,然后一个程序要用到这个DLL,但编译这个程序的时候需要相应的lib吧?我就是需要这样的一个lib 确认build成功了吗?在build菜单中Clean一下再重新build试试? 1.程序编译\run通过了没..?2.通过了, lib应该就生成了, 如果你没指定输出路径, *.lib就在dubug或release目录下3.查看工程的导出路径设置了没...?---在你电脑上先搜索下:*.lib, 就知道生存了没了..!!搜索不到那就是程序的问题了 我每次都是全部重新build的,而且肯定是成功了的。dll重新生成过了。连接 =》 常规 =》输出文件名只有Debug/scom.dll而且我发现我的项目里没有.def文件。搜索了,但还是没有。程序的问题?那DLL也产生了亚。 def文件不是自动生成的,需要你自己添加.可能你的dll没有定义任何输出函数,所以没有生成lib文件. 一个DLL,如果测试程序要用到这个DLL,是否一定需要相应的lib?这个lib可否在产生dll的同时一并产生? 用LoadLibrary方式可以不需要lib文件.有头文件就够了.lib当然可以在产生dll的同时产生.也可以在已有dll的情况下用导出(比如用BCB中的implib). 建议再写一个def文件,,正在帮你解决中,,, 我用新建一个静态库工程导入所有的源程序后编译出来的是50K的lib,但是我自己写了一个def文件,把我需要导出的函数(不是源程序中所有的函数)导出来才4K。而且感觉也是不正确的。 在每个函数前加extern "C"__declspec(dllexport)试试,,, 将scom.h里的注释一下://int RegisterUser(IC_Info ICinfo);//int ChangeUserProp(int instype, const char *content);int ChangeUserProps(IC_Info ICinfo);//int DeleteUser();//int FingerModCmpare();//int FingerModUpload(IC_Info *pICinfo);//int FingerModDownload(IC_Info ICinfo);然后不必给全部的函数加,只给某几个(大于一个)加,比如:extern "C"__declspec(dllexport)int ChangeUserProp(int instype, const char *content){ . . .}我这样是可以生成.lib文件的 是能生成lib,但是生成的lib只有4K,而且我的测试程序也是可以编译的但是运行的时候说找不到dll,我把dll拷贝到运行程序的当前目录就可以了。但是如果是通过静态dll工程生成的lib,就有52K,而且我无论在哪执行都可以,不需要在应用程序当前目录下放上dll. 是的,但是还有个问题,我编译完成的dll,总是要拷贝到测试程序的当前目录来,有没有好的办法,我新建一个快捷方式也不行,在linux上面不都可以用ln来一个链接的么?怎么这样还找不到,每次复制很麻烦。 查看你的DLL里面是不是没有标明要输出的函数或者变量(用__declspec(dllexport)表示的) 的,但是还有个问题,我编译完成的dll,总是要拷贝到测试程序的当前目录来,有没有好的办法,我新建一个快捷方式也不行, 在linux上面不都可以用ln来一个链接的么?怎么这样还找不到,每次复制很麻烦。----------------把文件加到工程里就可以了 出国工作咨询 跪求__计算机实验项目课题!! 使用BCGCBPro6.74出现了一个问题,help,help!! 怎么获得指定打印机的信息? 在继承自Cscrollview的ondraw函数中设置滚动条位置 m_horz=GetScrollPos(SB_HORZ)后 显示没反应 VC几个简单问题。 请教:关于 UDP 的接收与发送 用ado好,还是用rdo好 if( 加密解密高手 || 对加密解密感兴趣的 ) please in; 对自己的一点看法 关于打开音频文件的问题 [out, retval]是否只能做为左值返回?
然后产生一个lib,再拷贝到exe项目中,但这样很麻烦,有没有直接dll项目中产生lib的设置?
另外,这个lib跟你说的static lib不是一回事.
在build菜单中Clean一下再重新build试试?
2.通过了, lib应该就生成了, 如果你没指定输出路径, *.lib就在dubug或release目录下
3.查看工程的导出路径设置了没...?---在你电脑上先搜索下:*.lib, 就知道生存了没了..!!搜索不到
那就是程序的问题了
只有Debug/scom.dll而且我发现我的项目里没有.def文件。搜索了,但还是没有。程序的问题?那DLL也产生了亚。
可能你的dll没有定义任何输出函数,所以没有生成lib文件.
lib当然可以在产生dll的同时产生.也可以在已有dll的情况下用导出(比如用BCB中的implib).
而且感觉也是不正确的。
//int RegisterUser(IC_Info ICinfo);
//int ChangeUserProp(int instype, const char *content);
int ChangeUserProps(IC_Info ICinfo);
//int DeleteUser();
//int FingerModCmpare();
//int FingerModUpload(IC_Info *pICinfo);
//int FingerModDownload(IC_Info ICinfo);然后不必给全部的函数加,只给某几个(大于一个)加,比如:
extern "C"__declspec(dllexport)int ChangeUserProp(int instype, const char *content)
{
. . .
}
我这样是可以生成.lib文件的
但是运行的时候说找不到dll,我把dll拷贝到运行程序的当前目录就可以了。
但是如果是通过静态dll工程生成的lib,就有52K,而且我无论在哪执行都可以,不需要在应用程序当前目录下放上dll.
在linux上面不都可以用ln来一个链接的么?怎么这样还找不到,每次复制很麻烦。
在linux上面不都可以用ln来一个链接的么?怎么这样还找不到,每次复制很麻烦。
----------------
把文件加到工程里就可以了