Visual C ++,没有尝试添加.dll的引用

时间:2011-11-06 16:55:08

标签: c++ visual-studio-2010 dll

我创建了一个简单的.dll,我试图在一个简单的测试项目中使用它。但是,当我尝试添加引用时,没有可供选择,并且没有“浏览”选项。

我怀疑这可能与我的PATH有关,就像我安装CMake(一个不相关的非可视工作室项目的依赖项)一样,CMake决定删除我的PATH中的所有内容。

查看我的屏幕截图:http://jsfiddle.net/t84BS/ (data-uri可能不会在IE中显示)

我认为我至少应该在那里看到一些.NET引用。

2 个答案:

答案 0 :(得分:1)

我不确定你应该在IDE中看到什么。你有.def文件吗?要从dll中获取所有导出的符号,请运行dumpbin /EXPORTS my.dll

关于PATH变量运行for %G in ("%path:;=" "%") do @echo %G以查看单独一行上的每个路径。

要添加新路径,请键入PATH=%PATH%;C:\My\New\Path

也许所有路径都被设置而不是覆盖某处。检查你的autoexec.bat最后只需重新安装Visual Studio。

答案 1 :(得分:1)

在本机C ++中,您不会将DLL添加为引用。您需要包含针对从DLL创建的LIB或DEF文件的标头和链接。

首先,您需要包含提供所需代码的标头。确保任何DLL函数在此处标记为__declspec(dllimport)(在构建DLL本身时应该是dllexport,在使用它时应该是dllimport)。这可能需要在文件顶部定义一些东西。一种常见的方法是:

#ifdef IMPORT_MY_LIB
#    define MY_LIB_API __declspec(dllimport)
#else
#    define MY_LIB_API __declspec(dllexport)
#endif

接下来,您需要链接LIB。有两种方法可以做到这一点,一种方法更加正确,一种方法更简单。

正确的方法是转到项目属性,在链接器设置,输入部分中,将库添加为附加依赖项(选项应该与VS2008和2010中的选项类似,或许是其他选项)。

在生产之前,我用于测试和替换正确的方法的简单方法是添加:

#pragma comment(lib, "Library.lib")

指向您的某个文件。

LIB文件是在编译DLL时创建的,应该用于将该DLL链接到其他DLL。

有一种使用Windows API在运行时链接的方法,以后可能会对此感兴趣,但对此不是必需的。