次の問題が発生しました。私はスーパーのライブラリと呼ばれるMYLIBを持っている:それは次のようになります。エラーがコンパイルされずにインクルードされたライブラリでファイルが実行されているCake(CMake/Clion)
マイプロジェクトフォルダをライブラリーと呼ばれる...
mylib.hpp
namespace XYZ {
#ifndef LIBRARY_MYLIB_HPP
#define LIBRARY_MYLIB_HPP
int add(int, int);
#endif //LIBRARY_MYLIB_HPP
}
mylib.cpp
#include "mylib.hpp"
namespace XYZ {
int add(int a, int b) {
return a + b;
}
}
これらは同じディレクトリにあります。
私は、次のCMakeLists.txt
cmake_minimum_required(VERSION 3.6)
project(library)
add_library(library SHARED mylib.cpp)
ビル出力でCMakeのを使用して、それをビルドします。
[ 50%] Building CXX object CMakeFiles/library.dir/mylib.cpp.obj
[100%] Linking CXX shared library liblibrary.dll
[100%] Built target library
これは動作しますが、これは私にそれがになっているように* .dllファイルを提供します。
私は今、私はプロジェクトの場所に.HPPファイルをコピーした私の他のプロジェクトで
をこのライブラリを使用してみてください。 私のmain.cppには、次のようになります。
main.cppに
#include <iostream>
#include "mylib.hpp"
int main() {
std::cout << "Hello";
std::cout << XYZ::add(5, 7) << std::endl;
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.6)
project(uselib)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp)
add_executable(uselib ${SOURCE_FILES})
target_link_libraries(uselib C:/User/........./liblibrary.dll)
ビル出力:
[ 50%] Building CXX object CMakeFiles/uselib.dir/main.cpp.obj
[100%] Linking CXX executable uselib.exe
[100%] Built target uselib
作品。さて、私の問題に。
私はそれを起動しようとしたら、それは次の終了コードでクラッシュ:
C:\Users\......\uselib.exe
Process finished with exit code -1073741515 (0xC0000135)
私はメソッド呼び出しをコメントアウトすると、それは魔法のように動作します。
私は何時間も何か助けてくれましたか?
あなたはほとんどそれをかなりうまくやっているようです。たぶん基本的なチェック:あなたのアプリケーションを実行している作業ディレクトリであれば、dllを利用できますか? (またはPATH経由で) – hauron
@hauron私は実行ディレクトリに.dllをコピーした後、実行することができました。どうもありがとう! –