我正在编写一个旨在用作机械设计和仿真工作流程一部分的应用程序,我们希望能够使用Three.js来加载和可视化Solidworks中设计的部件,这些部件可以作为STL导出(文字或二进制).
**我完全认识到可以使用类似Meshlab的东西转换为OBJ或其他格式,但这似乎是一个不必要的额外步骤,会阻碍工作流程.**
看起来Three.js有很好的Collada,OBJ,UTF-8,VTK和JSON加载解决方案,但是没有干净的STL支持示例.我看到过去曾经使用过的东西,例如 https://github.com/tbuser/thingiview.js/blob/master/javascripts/thingiloader.js ,由于许可证我想避免,和 https://github.com/tbuser/three.js/blob/master/utils/stl_geometry.js 似乎没有完全集成.
我错过了什么吗?
很明显,在GNU Wiki中阅读可见性。
以这种从C ++教程示例
// classes example
#include <iostream>
using namespace std;
class Rectangle {
int width, height;
public:
void set_values (int,int);
int area() {return width*height;}
};
void Rectangle::set_values (int x, int y) {
width = x;
height = y;
}
Run Code Online (Sandbox Code Playgroud)
是否可以如第一个链接中所示area()公开和set_values(int,int)本地化而不更改代码?
我写了我的makefile文件来获取 .so
someproj.so : someproj.cpp
g++ --std=c++11 -O3 -fPIC -shared someproj.cpp -o someproj.so
Run Code Online (Sandbox Code Playgroud)
修改以通过添加隐藏所有符号 -fvisibility=hidden
someproj.so : someproj.cpp
g++ --std=c++11 -O3 -fvisibility=hidden -fPIC -shared someproj.cpp -o someproj.so
Run Code Online (Sandbox Code Playgroud)
通过修改上面的编译命令是否可以定制公开哪些功能?
当前使用的gcc 4.7.2版本
标准不需要编译器执行返回值优化(RVO),但是从C ++ 11开始,必须移动结果。
看来,这可能会将UB引入到/破坏代码中,这在C ++ 98中是有效的。
例如:
#include <vector>
#include <iostream>
typedef std::vector<int> Vec;
struct Manager{
Vec& vec;
Manager(Vec& vec_): vec(vec_){}
~Manager(){
//vec[0]=42; for UB
vec.at(0)=42;
}
};
Vec create(){
Vec a(1,21);
Manager m(a);
return a;
}
int main(){
std::cout<<create().at(0)<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)
当使用gcc(或与此相关的clang)进行编译时(为了简化示例,-O2 -fno-inline -fno-elide-constructors我正在使用std::vector这些build-option。如果没有这些选项以及手工类和更复杂的create功能,则可能会触发相同的行为)对于C ++ 98(-std=c++98)一切正常:
return a;触发复制构造函数,它保持a原样。m称为(必须在a被销毁之前发生,因为它m是在之后构造的a)。a在析构函数中访问是没有问题的。a函数称为。结果与预期的一样:21已打印(此处为live)。 …
我想在python中将datetime对象转换为int:
import datetime
time_entered = datetime.datetime.strptime(raw_input("Time1: "), "%H%M")
time_left = datetime.datetime.strptime(raw_input("Time2"), "%H%M")
time_taken = time_left - time_entered
int(time_taken)
Run Code Online (Sandbox Code Playgroud)
当我运行该代码时,我收到以下错误:
TypeError:int()参数必须是字符串或数字,而不是'datetime.timedelta'
深层链接 Android 首先打开启动器活动(不是深层链接的活动),然后打开清单文件中声明的深层链接的活动。我已遵循此处提到的所有步骤。
\n\n即。清单包含
\n\n<activity\n android:name="com.example.android.GizmosActivity"\n android:label="@string/title_gizmos" >\n <intent-filter android:label="@string/filter_title_viewgizmos">\n <action android:name="android.intent.action.VIEW" />\n <category android:name="android.intent.category.DEFAULT" />\n <category android:name="android.intent.category.BROWSABLE" />\n <!-- Accepts URIs that begin with "http://www.example.com/gizmos\xe2\x80\x9d -->\n <data android:scheme="http"\n android:host="www.example.com"\n android:pathPrefix="/gizmos" />\n <!-- note that the leading "/" is required for pathPrefix-->\n <!-- Accepts URIs that begin with "example://gizmos\xe2\x80\x9d\n <data android:scheme="example"\n android:host="gizmos" />\n -->\n </intent-filter>\n</activity>\nRun Code Online (Sandbox Code Playgroud)\n\n和深度链接的活动包含
\n\n@Override\npublic void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setContentView(R.layout.main);\n\n Intent intent = getIntent();\n String action = intent.getAction();\n Uri data = intent.getData();\n}\n …Run Code Online (Sandbox Code Playgroud) 是否可以在运行时用C动态修改符号表(在Linux上以elf格式)?
我最终的目标是:
在某些函数内部说foo,我想覆盖malloc我的自定义处理程序的函数my_malloc.但在外面foo,任何人malloc都应该像glibc一样调用malloc.
注意:这与在整个程序执行期间LD_PRELOAD覆盖的不同malloc.
例:
int main(int argc, char**)
{
constexpr int a = argc * 0;
(void)a;
constexpr int b = argc - argc;
(void)b;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
argc不是常量表达式,但编译器仍能够在两种情况下计算结果a和b编译时间(即0).
标准是否允许编译器与g ++一样聪明constexpr?
所以我正在开发Android Studio 2.2.2中的NDK示例.该项目使用clapack(一个数学库),它还有一个与clapack文件夹相同级别的testclapack.cpp.Android.mk文件也位于同一目录中.
Android.mk文件的内容是:
LOCAL_PATH:= $(call my-dir)
export MAINDIR:= $(LOCAL_PATH)
include $(CLEAR_VARS)
include $(MAINDIR)/clapack/Android.mk
LOCAL_PATH := $(MAINDIR)
include $(CLEAR_VARS)
LOCAL_MODULE:= lapack
LOCAL_SHORT_COMMANDS := true
LOCAL_STATIC_LIBRARIES := tmglib clapack blas f2c
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
LOCAL_EXPORT_LDLIBS := $(LOCAL_LDLIBS)
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE:= testlapack
LOCAL_SRC_FILES:= testclapack.cpp
LOCAL_STATIC_LIBRARIES := lapack
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
但是,Sync Gradle会导致错误:
Gradle sync失败:GNUMAKE:在编译步骤中只需要一个源文件:com.android.build.gradle.external.gnumake.CommandClassifier$NativeCompilerBuildTool@6fd7d241但收到:D:/ SDK/android/ndk-bundle/build //. ./platforms/android-19/arch-arm/usr/include E:/test/lapack/app/src/main/jni/testclapack.cpp
我认为它与Android.mk有关,因为如果我删除了testlapack的部分,那么gradle sync就可以了.
因为我需要在testclapack.cpp中调用函数,所以我需要一些关于如何将它们编译在一起的帮助.
我试图在我的网站上建立一个链接,该链接将在App Store上打开该应用程序,其中包含一些额外的参数,安装后我的应用程序便可以使用这些参数。
顺序将与此类似:
希望它看起来像这样:
itms-apps://itunes.apple.com/app/id123456789?user=foo&page=bar
Run Code Online (Sandbox Code Playgroud)
我想要执行此操作的主要原因是,这样用户可以直接跳到他们所在的页面,也可以登录。
我已经对此进行了一些研究,但只发现了用于会员链接的内容(也许可以用于此目的),但这似乎不是正确的选择。
任何想法将不胜感激,谢谢!
编辑
事实证明,这称为“延迟深层链接”,这是我发现的一些类似线程:
c++ ×3
gcc ×3
c++11 ×2
makefile ×2
android-make ×1
android-ndk ×1
app-store ×1
constexpr ×1
datetime ×1
elf ×1
hyperlink ×1
int ×1
ios ×1
javascript ×1
ld-preload ×1
linux ×1
loader ×1
python ×1
rvo ×1
stl-format ×1
symbols ×1
three.js ×1