相关疑难解决方法(0)

如何在Visual C++中构建导入库(.lib)和DLL?

我想有一个Visual Studio项目,它构建一个DLL文件和一个导入库(.lib)文件.(导入库是一个静态链接库,负责在其他使用它的项目中加载该DLL文件).

所以我去了Visual Studio C++ 2008 Express Edition,创建了类库类型的新项目,并将"配置类型"设置为"Dyanamic Library(.dll)".

但是当我构建解决方案时,我看到的唯一相关输出文件是DLL文件; 我没有看到生成任何LIB文件.我查看了项目目录和所有子目录(Release和Debug).

我相信可以同时构建LIB和DLL文件,因为在MSDN上它说"链接器在构建DLL时创建导入库". 此外,该网站的另一个用户是使用Visual C++同时创建LIB和DLL文件.

那我该怎么办呢?

c++ import dll visual-studio

65
推荐指数
4
解决办法
13万
查看次数

如何设置dll的入口点

首先我认为dll DLLMain中的入口点,但是当我尝试在C#中导入它时,我得到一个错误,找不到入口点这是我的代码:

#include <Windows.h>

int Test(int x,int y)
{
    return x+y;
}

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        MessageBox(0,L"Test",L"From unmanaged dll",0);
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
} 
Run Code Online (Sandbox Code Playgroud)

如何为我的dll设置入口点?如果你不介意,你可以给我一些关于切入点的解释吗?

像我必须再次设置导入相同的DLL并更改入口点,以便我可以在同一个DLL中使用其他功能?提前致谢.

c++ dll winapi dllimport

10
推荐指数
1
解决办法
2万
查看次数

Windows中的符号可见性

我在linux中做了很多编程,并使用visibility属性来定义符号在共享对象中是可见还是隐藏.只是为了让事情更清晰:如果一个符号是可见的,它将在外部访问(某人与共享对象链接),如果它被隐藏,它应该只在内部使用.

在Windows上它看起来有点不同,它适用于导出(符号在此处定义在共享对象中,并且可以由与此链接的人访问)和导入(这里我链接到共享对象并且符号被导出那里)符号.但我找不到告诉编译器不导出符号的方法,因为它只能在这里使用,即如果有人链接它,则需要链接器错误.

我的问题是,如果我可以将符号定义为"隐藏"(如在linux的gcc中)以及如何.此外,所有这些在Windows主题中的可见性对我来说有点模糊,我正在寻找一些进一步阅读链接,以更好地了解一切如何工作.

c++ windows mingw visual-c++

3
推荐指数
1
解决办法
4825
查看次数

标签 统计

c++ ×3

dll ×2

dllimport ×1

import ×1

mingw ×1

visual-c++ ×1

visual-studio ×1

winapi ×1

windows ×1