【发布时间】:2016-01-08 20:18:41
【问题描述】:
共有三个文件,(m.c、m.h和**main.c*)。
文件 m.h
// m.h
int m();
文件m.c
// m.c
#include <stdio.h>
#include "m.h"
int m(){
printf("Hello,m!\n");
return 0;
}
文件 main.c
// main.c
#include "m.h"
int main(){
return m();
}
虽然我更喜欢共享库 (m.dll),但我制作了 CMakeLists.txt 文件:
PROJECT("app1")
ADD_LIBRARY(m SHARED m.c)
ADD_EXECUTABLE(myexe main.c)
TARGET_LINK_LIBRARIES(myexe m)
CMake 配置完成并生成完成。打开 app1.sln 并使用 Visual Studio 构建,它崩溃为
LNK1104:Can't open file "Debug\m.lib"
它只能在ADD_LIBRARY() 用作STATIC。为什么它不能在 Windows 上运行?
如果我有另一个共享库 (mylib.dll),我如何在我的 main.c 和 CMakeLists.txt 文件中调用它的函数?
【问题讨论】:
-
It always crashes- 什么崩溃了? CMake 配置步骤(cmake.exe调用),构建步骤(顺便说一句,您使用什么工具进行构建?Visual Studio?Make?)或运行可执行文件?这次崩溃会出现什么错误消息? -
CMakeLists.txt 在 Ubuntu-14.04 上运行良好。 libm.so 已生成。
-
@llorch 欢迎使用 StackOverflow。只需查看对代码的修改,您就可以实现它。请参阅下面的答案。