简体   繁体   English

如何将asmjit嵌入到自己的C ++项目中?

[英]How to embed asmjit into own C++ project?

I am new to asmjit (and somewhat new to C++), and right now I am trying to just get asmjit working within my C++ project. 我是asmjit的新手(对于C ++还是有些新手),现在我正试图让asmjit在我的C ++项目中正常工作。 I am using a Windows machine with Visual Studio 17 and C++17, and my first attempt using cmake already worked fine. 我正在将Windows计算机与Visual Studio 17和C ++ 17一起使用,并且我第一次尝试使用cmake已经可以正常工作。

However, I'd rather have asmjit embedded into my project as suggested here (see section Configuring & Building, first paragraph). 但是,我宁愿按照此处的建议将asmjit嵌入到我的项目中(请参阅“配置和构建”一节,第一段)。 As described there, I just copied the src directory into my project directory and defined the ASMJIT_EMBED and ASMJIT_STATIC flags (though I'm aware that only one would suffice, but it doesn't change anything). 如此处所述,我只是将src目录复制到我的项目目录中,并定义了ASMJIT_EMBEDASMJIT_STATIC标志(尽管我知道只有一个就足够了,但它什么都不会改变)。 Then I tried a very simple test as follows: 然后我尝试了一个非常简单的测试,如下所示:

#define ASMJIT_EMBED              // Asmjit is embedded (implies ASMJIT_STATIC).
#define ASMJIT_STATIC             // Define to enable static-library build.

#include "src\asmjit\asmjit.h"

int main(int argc, const char* argv[])
{
    asmjit::X86Xmm var1;
}

The code compiles fine, however, the linker keeps throwing unresolved externals errors: 代码可以正常编译,但是,链接器不断抛出unresolved externals错误:

1>------ Build started: Project: Project2, Configuration: Debug Win32 ------
1>main.cpp
1>d:\eig\arbeit\local_forschung\project2\src\asmjit\base\operand.h(1500): warning C4804: '~': unsafe use of type 'bool' in operation
1>d:\eig\arbeit\local_forschung\project2\src\asmjit\base\operand.h(1527): note: see reference to class template instantiation 'asmjit::TypeIdOfInt<bool>' being compiled
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.14.26428\include\filesystem(2447): note: see reference to class template instantiation 'std::chrono::time_point<std::filesystem::_File_time_clock,std::filesystem::_File_time_clock::duration>' being compiled
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.14.26428\include\type_traits(520): note: see reference to class template instantiation 'std::basic_string_view<wchar_t,std::char_traits<wchar_t>>' being compiled
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.14.26428\include\type_traits(1358): note: see reference to class template instantiation 'std::is_convertible<const _StringViewIsh &,std::basic_string_view<wchar_t,std::char_traits<wchar_t>>>' being compiled
1>        with
1>        [
1>            _StringViewIsh=const wchar_t *
1>        ]
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.14.26428\include\type_traits(1364): note: see reference to class template instantiation 'std::conjunction<std::is_convertible<const _StringViewIsh &,std::basic_string_view<wchar_t,std::char_traits<wchar_t>>>,std::negation<std::is_convertible<const _StringViewIsh &,const _Elem *>>>' being compiled
1>        with
1>        [
1>            _StringViewIsh=const wchar_t *,
1>            _Elem=wchar_t
1>        ]
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.14.26428\include\xstring(2105): note: see reference to variable template 'const bool conjunction_v<std::is_convertible<wchar_t const * const &,std::basic_string_view<wchar_t,std::char_traits<wchar_t> > >,std::negation<std::is_convertible<wchar_t const * const &,wchar_t const *> > >' being compiled
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.14.26428\include\xstring(2264): note: see reference to alias template instantiation '_Is_string_view_ish<const wchar_t*>' being compiled
1>d:\eig\arbeit\local_forschung\project2\src\asmjit\base\operand.h(1500): warning C4804: '<': unsafe use of type 'bool' in operation
1>   Creating library D:\eig\Arbeit\local_Forschung\Project2\Debug\Project2.lib and object D:\eig\Arbeit\local_Forschung\Project2\Debug\Project2.exp
1>main.obj : error LNK2001: unresolved external symbol "struct asmjit::X86OpData const asmjit::x86OpData" (?x86OpData@asmjit@@3UX86OpData@1@B)
1>D:\eig\Arbeit\local_Forschung\Project2\Debug\Project2.exe : fatal error LNK1120: 1 unresolved externals
1>Done building project "Project2.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Probably, I am doing something horribly wrong - but what is it? 可能是我做错了非常严重的事-但这是什么?

Based on orhtej2's comment 根据orhtej2的评论

You also need to add the files you copied to the solution/project so that MSVS actually builds them. 您还需要将复制的文件添加到解决方案/项目中,以便MSVS实际构建它们。

this is what I did: Just right click on the project ==> Add ==> Existing Item, and then select all the source files from the asmjit directories. 这就是我所做的:右键单击项目==>添加==>现有项目,然后从asmjit目录中选择所有源文件。 This worked fine. 这很好。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM