我有两个源文件,main.cc,foo.cc。
#include <iostream>
using namespace std;
int main() {
cout << "main\n";
}
foo.cc
#include <iostream>
using namespace std;
class foo {
public:
foo() {
cout << "foo ctor\n";
}
};
static foo foo_obj;
当我这样手动编译时:
$ g ++ -c foo.cc -o libfoo.a
$ g ++ main.cc libfoo.a -o main
$ ./main
foo ctor
主要
但是当我使用cmake时,它不会打印foo ctor
。这是CMakeLists.txt:
cmake_minimum_required(VERSION 3.2)
set(CMAKE_CXX_FLAGS "-std=c++11")
add_library(foo STATIC foo.cc)
add_executable(main main.cc)
target_link_libraries(main foo)
cmake显然做了我意想不到的事情。
答案 0 :(得分:0)
事实证明,可以使用 protected void lnkTest_Click(object sender, EventArgs e)
{
GridViewRow gvr = (GridViewRow)((Control)sender).Parent.Parent;
HiddenField hdnId = (HiddenField)gvr.FindControl("hdnId");
Response.Redirect("frmTest.aspx?Id=" + Convert.ToString(hdnId.Value) + "&DropDownId=" + ddlTest.SelectedValue, false);
}
来避免这种情况。例如写这样:
-Wl,--whole-archive