链接DLL时命令行错误
Command Line Error when Linking DLL
我正在使用Visual Studio 2010的工具链来生成DLL。具体来说,我想要一个Matlab模块。我相信我已经很接近了,但是我遇到了以下错误:
LIBCMT.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
.libs/AverageFilter.mexw32 : fatal error LNK1120: 1 unresolved externals
在我的DLL中没有这样的符号,因为在共享库中没有这样的符号是没有意义的。然而,"libcmt。lib'包含可执行文件和dll的符号。因此,我理解这个错误,但由于我显式地创建了一个DLL,我希望微软的链接器忽略这个特定的未解析的符号。
据我所知,在生成dll时,期望没有未定义的符号,但由于唯一这样的符号是不相关的,我决定使用'/FORCE'选项。我真的不喜欢这个解决方案,但首先我想有一个工作的Matlab模块,然后完善我的解决方案。
不幸的是,使用'/FORCE'选项会导致以下错误:
cl : Command line error D8021 : invalid numeric argument '/FORCE'
如何解决这些错误?有没有办法让微软的链接器忽略一个特定的未解析的符号?
windows中的Exe和Dll如果包含可执行代码,则需要入口点,请参阅MSDN页面中的DllMain:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682583 (v = vs.85) . aspx
对于exe,它倾向于为控制台应用程序的main(),或为纯win32 API应用程序的WinMain。
由于您的DLL需要一个main(),我认为您必须创建一个EXE控制台项目,然后将其更改为DLL。
要解决您的问题,您需要创建入口点函数,通常是DllMain,但在您的情况下实际上是main。你的DLL的入口点不能做任何事情(即空/存根函数),这将允许它链接,并由操作系统加载/卸载,然后允许你的客户端调用你的代码:)。
- 添加符号 libgtest.so 错误:命令行中缺少 DSO
- 尝试构建 xerces c++ 解析器。Netbeans 和命令行构建错误未定义对"xercesc_3_2..."的引用
- qt C++命令行代码中的分段错误(核心转储)
- 如何处理错误"E1696命令行错误:无法在Visual Studio 2017中打开元数据文件"mscorlib.dll"?
- GCC-7:错误:无法识别的命令行选项"-M64"
- Clang:覆盖之前在命令行上指定的所有警告和错误警告标志
- 使用命令行运行 gtest 会出现错误
- C++/CLR:仅在编译 x86 时出现命令行错误
- read() 从命令行返回 EISDIR 错误
- 如何从命令行运行可执行文件时启用系统错误消息
- 当用户提供空命令行值时,如何投掷错误
- C 错误:从命令行输入更改为变量输入
- 错误:生成Mesos中无法识别的命令行选项"-Wno无效源编码"[-Weror]
- C 实现CNN错误添加符号:命令行中缺少DSO
- libopencv_core.so.2.4:错误添加符号:命令行中缺少DSO
- gcc:错误:在 MacOSX 上构建 openjdk9 时'-mstack-alignment=16'无法识别的命令行选项
- 命令行参数错误
- 在mac上构建Google测试时出现链接错误(命令行)
- glfw3错误:命令行中缺少DSO
- 为什么我会在意外标记附近出现语法错误?命令行参数